{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 一、理解赛题\n",
    "\n",
    "在比赛中要求我们根据选手的赛局数据推测出游戏的结果，根据我们平时的游戏经验，一般来说经济差高的，人头差比较大的，输出比较高的一般都能够取得最后胜利，这体现了数据的**相关性**，那接下来我们就要尝试找到一个具体的函数来描绘不同数据对游戏结果的影响"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 二、数据处理\n",
    "数据由比赛提供，我们直接用pandas包读取就行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "# !unzip -d data/ data/data137276/test.csv.zip\n",
    "# !unzip -d data/ data/data137276/train.csv.zip"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "x_train = pd.read_csv('data/train.csv').drop('win',axis=1)\n",
    "y_train = pd.read_csv('data/train.csv')['win']\n",
    "x_test = pd.read_csv('data/test.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>kills</th>\n",
       "      <th>deaths</th>\n",
       "      <th>assists</th>\n",
       "      <th>largestkillingspree</th>\n",
       "      <th>largestmultikill</th>\n",
       "      <th>longesttimespentliving</th>\n",
       "      <th>doublekills</th>\n",
       "      <th>triplekills</th>\n",
       "      <th>quadrakills</th>\n",
       "      <th>...</th>\n",
       "      <th>totunitshealed</th>\n",
       "      <th>dmgtoturrets</th>\n",
       "      <th>timecc</th>\n",
       "      <th>totdmgtaken</th>\n",
       "      <th>magicdmgtaken</th>\n",
       "      <th>physdmgtaken</th>\n",
       "      <th>truedmgtaken</th>\n",
       "      <th>wardsplaced</th>\n",
       "      <th>wardskilled</th>\n",
       "      <th>firstblood</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>569</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7819</td>\n",
       "      <td>2178</td>\n",
       "      <td>5239</td>\n",
       "      <td>401</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>880</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>4</td>\n",
       "      <td>303</td>\n",
       "      <td>0</td>\n",
       "      <td>24637</td>\n",
       "      <td>5607</td>\n",
       "      <td>17635</td>\n",
       "      <td>1394</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>16</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>593</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>3</td>\n",
       "      <td>329</td>\n",
       "      <td>0</td>\n",
       "      <td>18749</td>\n",
       "      <td>3651</td>\n",
       "      <td>14834</td>\n",
       "      <td>263</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>381</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>12134</td>\n",
       "      <td>1739</td>\n",
       "      <td>10318</td>\n",
       "      <td>76</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>11</td>\n",
       "      <td>25</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>455</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>27891</td>\n",
       "      <td>14068</td>\n",
       "      <td>12749</td>\n",
       "      <td>1073</td>\n",
       "      <td>34</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>179995</th>\n",
       "      <td>179995</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>362</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>3</td>\n",
       "      <td>5751</td>\n",
       "      <td>0</td>\n",
       "      <td>14786</td>\n",
       "      <td>2374</td>\n",
       "      <td>12309</td>\n",
       "      <td>102</td>\n",
       "      <td>12</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>179996</th>\n",
       "      <td>179996</td>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>574</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>2</td>\n",
       "      <td>8907</td>\n",
       "      <td>0</td>\n",
       "      <td>11019</td>\n",
       "      <td>3933</td>\n",
       "      <td>6533</td>\n",
       "      <td>552</td>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>179997</th>\n",
       "      <td>179997</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>4</td>\n",
       "      <td>6627</td>\n",
       "      <td>0</td>\n",
       "      <td>14279</td>\n",
       "      <td>3661</td>\n",
       "      <td>10617</td>\n",
       "      <td>0</td>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>179998</th>\n",
       "      <td>179998</td>\n",
       "      <td>14</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>10</td>\n",
       "      <td>2</td>\n",
       "      <td>980</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1943</td>\n",
       "      <td>0</td>\n",
       "      <td>19165</td>\n",
       "      <td>4818</td>\n",
       "      <td>14110</td>\n",
       "      <td>236</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>179999</th>\n",
       "      <td>179999</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>559</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1590</td>\n",
       "      <td>0</td>\n",
       "      <td>10992</td>\n",
       "      <td>7681</td>\n",
       "      <td>3065</td>\n",
       "      <td>246</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>180000 rows × 31 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            id  kills  deaths  assists  largestkillingspree  largestmultikill  \\\n",
       "0            0      1       5        2                    0                 1   \n",
       "1            1      5       8        7                    3                 1   \n",
       "2            2      1       6       16                    0                 1   \n",
       "3            3      1       2        0                    0                 1   \n",
       "4            4      4      11       25                    0                 1   \n",
       "...        ...    ...     ...      ...                  ...               ...   \n",
       "179995  179995      1       6       12                    0                 1   \n",
       "179996  179996      7       3        4                    5                 1   \n",
       "179997  179997      9       0        9                    9                 1   \n",
       "179998  179998     14       1        5                   10                 2   \n",
       "179999  179999      4       4        2                    2                 1   \n",
       "\n",
       "        longesttimespentliving  doublekills  triplekills  quadrakills  ...  \\\n",
       "0                          569            0            0            0  ...   \n",
       "1                          880            0            0            0  ...   \n",
       "2                          593            0            0            0  ...   \n",
       "3                          381            0            0            0  ...   \n",
       "4                          455            0            0            0  ...   \n",
       "...                        ...          ...          ...          ...  ...   \n",
       "179995                     362            0            0            0  ...   \n",
       "179996                     574            0            0            0  ...   \n",
       "179997                       0            0            0            0  ...   \n",
       "179998                     980            3            0            0  ...   \n",
       "179999                     559            0            0            0  ...   \n",
       "\n",
       "        totunitshealed  dmgtoturrets  timecc  totdmgtaken  magicdmgtaken  \\\n",
       "0                    2             0       0         7819           2178   \n",
       "1                    4           303       0        24637           5607   \n",
       "2                    3           329       0        18749           3651   \n",
       "3                    1             0       0        12134           1739   \n",
       "4                    8             0       0        27891          14068   \n",
       "...                ...           ...     ...          ...            ...   \n",
       "179995               3          5751       0        14786           2374   \n",
       "179996               2          8907       0        11019           3933   \n",
       "179997               4          6627       0        14279           3661   \n",
       "179998               1          1943       0        19165           4818   \n",
       "179999               1          1590       0        10992           7681   \n",
       "\n",
       "        physdmgtaken  truedmgtaken  wardsplaced  wardskilled  firstblood  \n",
       "0               5239           401            4            1           0  \n",
       "1              17635          1394           10            0           0  \n",
       "2              14834           263            7            1           0  \n",
       "3              10318            76            8            1           0  \n",
       "4              12749          1073           34            2           0  \n",
       "...              ...           ...          ...          ...         ...  \n",
       "179995         12309           102           12            1           0  \n",
       "179996          6533           552            7            2           0  \n",
       "179997         10617             0            7            2           1  \n",
       "179998         14110           236            6            0           0  \n",
       "179999          3065           246            7            1           0  \n",
       "\n",
       "[180000 rows x 31 columns]"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>kills</th>\n",
       "      <th>deaths</th>\n",
       "      <th>assists</th>\n",
       "      <th>largestkillingspree</th>\n",
       "      <th>largestmultikill</th>\n",
       "      <th>longesttimespentliving</th>\n",
       "      <th>doublekills</th>\n",
       "      <th>triplekills</th>\n",
       "      <th>quadrakills</th>\n",
       "      <th>...</th>\n",
       "      <th>totunitshealed</th>\n",
       "      <th>dmgtoturrets</th>\n",
       "      <th>timecc</th>\n",
       "      <th>totdmgtaken</th>\n",
       "      <th>magicdmgtaken</th>\n",
       "      <th>physdmgtaken</th>\n",
       "      <th>truedmgtaken</th>\n",
       "      <th>wardsplaced</th>\n",
       "      <th>wardskilled</th>\n",
       "      <th>firstblood</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>180000</td>\n",
       "      <td>8</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>874</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>20112</td>\n",
       "      <td>6704</td>\n",
       "      <td>12945</td>\n",
       "      <td>462</td>\n",
       "      <td>10</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>180001</td>\n",
       "      <td>4</td>\n",
       "      <td>8</td>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>978</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>4974</td>\n",
       "      <td>0</td>\n",
       "      <td>49389</td>\n",
       "      <td>19109</td>\n",
       "      <td>29651</td>\n",
       "      <td>629</td>\n",
       "      <td>15</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>180002</td>\n",
       "      <td>19</td>\n",
       "      <td>6</td>\n",
       "      <td>8</td>\n",
       "      <td>10</td>\n",
       "      <td>2</td>\n",
       "      <td>912</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>3</td>\n",
       "      <td>5653</td>\n",
       "      <td>0</td>\n",
       "      <td>26606</td>\n",
       "      <td>8344</td>\n",
       "      <td>17627</td>\n",
       "      <td>634</td>\n",
       "      <td>14</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>180003</td>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>519</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>3988</td>\n",
       "      <td>0</td>\n",
       "      <td>25852</td>\n",
       "      <td>5111</td>\n",
       "      <td>19552</td>\n",
       "      <td>1189</td>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>180004</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>12</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>646</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>5</td>\n",
       "      <td>465</td>\n",
       "      <td>0</td>\n",
       "      <td>34486</td>\n",
       "      <td>16690</td>\n",
       "      <td>16882</td>\n",
       "      <td>914</td>\n",
       "      <td>39</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19995</th>\n",
       "      <td>199995</td>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "      <td>28</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>886</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>5</td>\n",
       "      <td>1081</td>\n",
       "      <td>0</td>\n",
       "      <td>34860</td>\n",
       "      <td>14476</td>\n",
       "      <td>19691</td>\n",
       "      <td>692</td>\n",
       "      <td>22</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19996</th>\n",
       "      <td>199996</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>383</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>478</td>\n",
       "      <td>0</td>\n",
       "      <td>15828</td>\n",
       "      <td>1375</td>\n",
       "      <td>14404</td>\n",
       "      <td>48</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19997</th>\n",
       "      <td>199997</td>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>387</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>22255</td>\n",
       "      <td>4189</td>\n",
       "      <td>16467</td>\n",
       "      <td>1598</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19998</th>\n",
       "      <td>199998</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>381</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1285</td>\n",
       "      <td>0</td>\n",
       "      <td>11519</td>\n",
       "      <td>4679</td>\n",
       "      <td>6839</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19999</th>\n",
       "      <td>199999</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>27</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>1989</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>6</td>\n",
       "      <td>2153</td>\n",
       "      <td>0</td>\n",
       "      <td>17042</td>\n",
       "      <td>8284</td>\n",
       "      <td>8640</td>\n",
       "      <td>117</td>\n",
       "      <td>50</td>\n",
       "      <td>15</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>20000 rows × 31 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           id  kills  deaths  assists  largestkillingspree  largestmultikill  \\\n",
       "0      180000      8       7        5                    2                 1   \n",
       "1      180001      4       8        5                    2                 1   \n",
       "2      180002     19       6        8                   10                 2   \n",
       "3      180003      1       8        6                    0                 1   \n",
       "4      180004      1      10       12                    0                 1   \n",
       "...       ...    ...     ...      ...                  ...               ...   \n",
       "19995  199995      2       9       28                    0                 1   \n",
       "19996  199996      1       2        2                    0                 1   \n",
       "19997  199997      2       9        4                    0                 1   \n",
       "19998  199998      0       5        0                    0                 0   \n",
       "19999  199999      6       1       27                    4                 2   \n",
       "\n",
       "       longesttimespentliving  doublekills  triplekills  quadrakills  ...  \\\n",
       "0                         874            0            0            0  ...   \n",
       "1                         978            0            0            0  ...   \n",
       "2                         912            5            0            0  ...   \n",
       "3                         519            0            0            0  ...   \n",
       "4                         646            0            0            0  ...   \n",
       "...                       ...          ...          ...          ...  ...   \n",
       "19995                     886            0            0            0  ...   \n",
       "19996                     383            0            0            0  ...   \n",
       "19997                     387            0            0            0  ...   \n",
       "19998                     381            0            0            0  ...   \n",
       "19999                    1989            1            0            0  ...   \n",
       "\n",
       "       totunitshealed  dmgtoturrets  timecc  totdmgtaken  magicdmgtaken  \\\n",
       "0                   1             0       0        20112           6704   \n",
       "1                   1          4974       0        49389          19109   \n",
       "2                   3          5653       0        26606           8344   \n",
       "3                   1          3988       0        25852           5111   \n",
       "4                   5           465       0        34486          16690   \n",
       "...               ...           ...     ...          ...            ...   \n",
       "19995               5          1081       0        34860          14476   \n",
       "19996               1           478       0        15828           1375   \n",
       "19997               1             0       0        22255           4189   \n",
       "19998               1          1285       0        11519           4679   \n",
       "19999               6          2153       0        17042           8284   \n",
       "\n",
       "       physdmgtaken  truedmgtaken  wardsplaced  wardskilled  firstblood  \n",
       "0             12945           462           10            3           0  \n",
       "1             29651           629           15            2           0  \n",
       "2             17627           634           14            2           0  \n",
       "3             19552          1189            5            3           0  \n",
       "4             16882           914           39            9           0  \n",
       "...             ...           ...          ...          ...         ...  \n",
       "19995         19691           692           22            1           0  \n",
       "19996         14404            48            8            0           0  \n",
       "19997         16467          1598            0            0           1  \n",
       "19998          6839             0            4            0           0  \n",
       "19999          8640           117           50           15           0  \n",
       "\n",
       "[20000 rows x 31 columns]"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_test"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们这里把x_train和x_test拼接起来,方便等会做特征工程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "feature = pd.concat([x_train, x_test])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>kills</th>\n",
       "      <th>deaths</th>\n",
       "      <th>assists</th>\n",
       "      <th>largestkillingspree</th>\n",
       "      <th>largestmultikill</th>\n",
       "      <th>longesttimespentliving</th>\n",
       "      <th>doublekills</th>\n",
       "      <th>triplekills</th>\n",
       "      <th>quadrakills</th>\n",
       "      <th>...</th>\n",
       "      <th>totunitshealed</th>\n",
       "      <th>dmgtoturrets</th>\n",
       "      <th>timecc</th>\n",
       "      <th>totdmgtaken</th>\n",
       "      <th>magicdmgtaken</th>\n",
       "      <th>physdmgtaken</th>\n",
       "      <th>truedmgtaken</th>\n",
       "      <th>wardsplaced</th>\n",
       "      <th>wardskilled</th>\n",
       "      <th>firstblood</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>569</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7819</td>\n",
       "      <td>2178</td>\n",
       "      <td>5239</td>\n",
       "      <td>401</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>880</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>4</td>\n",
       "      <td>303</td>\n",
       "      <td>0</td>\n",
       "      <td>24637</td>\n",
       "      <td>5607</td>\n",
       "      <td>17635</td>\n",
       "      <td>1394</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>16</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>593</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>3</td>\n",
       "      <td>329</td>\n",
       "      <td>0</td>\n",
       "      <td>18749</td>\n",
       "      <td>3651</td>\n",
       "      <td>14834</td>\n",
       "      <td>263</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>381</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>12134</td>\n",
       "      <td>1739</td>\n",
       "      <td>10318</td>\n",
       "      <td>76</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>11</td>\n",
       "      <td>25</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>455</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>27891</td>\n",
       "      <td>14068</td>\n",
       "      <td>12749</td>\n",
       "      <td>1073</td>\n",
       "      <td>34</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19995</th>\n",
       "      <td>199995</td>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "      <td>28</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>886</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>5</td>\n",
       "      <td>1081</td>\n",
       "      <td>0</td>\n",
       "      <td>34860</td>\n",
       "      <td>14476</td>\n",
       "      <td>19691</td>\n",
       "      <td>692</td>\n",
       "      <td>22</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19996</th>\n",
       "      <td>199996</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>383</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>478</td>\n",
       "      <td>0</td>\n",
       "      <td>15828</td>\n",
       "      <td>1375</td>\n",
       "      <td>14404</td>\n",
       "      <td>48</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19997</th>\n",
       "      <td>199997</td>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>387</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>22255</td>\n",
       "      <td>4189</td>\n",
       "      <td>16467</td>\n",
       "      <td>1598</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19998</th>\n",
       "      <td>199998</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>381</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1285</td>\n",
       "      <td>0</td>\n",
       "      <td>11519</td>\n",
       "      <td>4679</td>\n",
       "      <td>6839</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19999</th>\n",
       "      <td>199999</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>27</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>1989</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>6</td>\n",
       "      <td>2153</td>\n",
       "      <td>0</td>\n",
       "      <td>17042</td>\n",
       "      <td>8284</td>\n",
       "      <td>8640</td>\n",
       "      <td>117</td>\n",
       "      <td>50</td>\n",
       "      <td>15</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>200000 rows × 31 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           id  kills  deaths  assists  largestkillingspree  largestmultikill  \\\n",
       "0           0      1       5        2                    0                 1   \n",
       "1           1      5       8        7                    3                 1   \n",
       "2           2      1       6       16                    0                 1   \n",
       "3           3      1       2        0                    0                 1   \n",
       "4           4      4      11       25                    0                 1   \n",
       "...       ...    ...     ...      ...                  ...               ...   \n",
       "19995  199995      2       9       28                    0                 1   \n",
       "19996  199996      1       2        2                    0                 1   \n",
       "19997  199997      2       9        4                    0                 1   \n",
       "19998  199998      0       5        0                    0                 0   \n",
       "19999  199999      6       1       27                    4                 2   \n",
       "\n",
       "       longesttimespentliving  doublekills  triplekills  quadrakills  ...  \\\n",
       "0                         569            0            0            0  ...   \n",
       "1                         880            0            0            0  ...   \n",
       "2                         593            0            0            0  ...   \n",
       "3                         381            0            0            0  ...   \n",
       "4                         455            0            0            0  ...   \n",
       "...                       ...          ...          ...          ...  ...   \n",
       "19995                     886            0            0            0  ...   \n",
       "19996                     383            0            0            0  ...   \n",
       "19997                     387            0            0            0  ...   \n",
       "19998                     381            0            0            0  ...   \n",
       "19999                    1989            1            0            0  ...   \n",
       "\n",
       "       totunitshealed  dmgtoturrets  timecc  totdmgtaken  magicdmgtaken  \\\n",
       "0                   2             0       0         7819           2178   \n",
       "1                   4           303       0        24637           5607   \n",
       "2                   3           329       0        18749           3651   \n",
       "3                   1             0       0        12134           1739   \n",
       "4                   8             0       0        27891          14068   \n",
       "...               ...           ...     ...          ...            ...   \n",
       "19995               5          1081       0        34860          14476   \n",
       "19996               1           478       0        15828           1375   \n",
       "19997               1             0       0        22255           4189   \n",
       "19998               1          1285       0        11519           4679   \n",
       "19999               6          2153       0        17042           8284   \n",
       "\n",
       "       physdmgtaken  truedmgtaken  wardsplaced  wardskilled  firstblood  \n",
       "0              5239           401            4            1           0  \n",
       "1             17635          1394           10            0           0  \n",
       "2             14834           263            7            1           0  \n",
       "3             10318            76            8            1           0  \n",
       "4             12749          1073           34            2           0  \n",
       "...             ...           ...          ...          ...         ...  \n",
       "19995         19691           692           22            1           0  \n",
       "19996         14404            48            8            0           0  \n",
       "19997         16467          1598            0            0           1  \n",
       "19998          6839             0            4            0           0  \n",
       "19999          8640           117           50           15           0  \n",
       "\n",
       "[200000 rows x 31 columns]"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feature"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以用describe方法和info方法查看数据的基本情况,我们拿到手的数据除了一血情况以外基本都是连续型的,并且数据中没有缺失值,另外在回归问题中数据的异常值经常用箱线图来判断"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>kills</th>\n",
       "      <th>deaths</th>\n",
       "      <th>assists</th>\n",
       "      <th>largestkillingspree</th>\n",
       "      <th>largestmultikill</th>\n",
       "      <th>longesttimespentliving</th>\n",
       "      <th>doublekills</th>\n",
       "      <th>triplekills</th>\n",
       "      <th>quadrakills</th>\n",
       "      <th>...</th>\n",
       "      <th>totunitshealed</th>\n",
       "      <th>dmgtoturrets</th>\n",
       "      <th>timecc</th>\n",
       "      <th>totdmgtaken</th>\n",
       "      <th>magicdmgtaken</th>\n",
       "      <th>physdmgtaken</th>\n",
       "      <th>truedmgtaken</th>\n",
       "      <th>wardsplaced</th>\n",
       "      <th>wardskilled</th>\n",
       "      <th>firstblood</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>200000.000000</td>\n",
       "      <td>200000.000000</td>\n",
       "      <td>200000.000000</td>\n",
       "      <td>200000.000000</td>\n",
       "      <td>200000.000000</td>\n",
       "      <td>200000.000000</td>\n",
       "      <td>200000.000000</td>\n",
       "      <td>200000.000000</td>\n",
       "      <td>200000.000000</td>\n",
       "      <td>200000.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>200000.000000</td>\n",
       "      <td>200000.000000</td>\n",
       "      <td>200000.0</td>\n",
       "      <td>200000.000000</td>\n",
       "      <td>200000.000000</td>\n",
       "      <td>200000.000000</td>\n",
       "      <td>200000.000000</td>\n",
       "      <td>200000.000000</td>\n",
       "      <td>200000.000000</td>\n",
       "      <td>200000.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>99999.500000</td>\n",
       "      <td>5.798545</td>\n",
       "      <td>5.810190</td>\n",
       "      <td>8.322870</td>\n",
       "      <td>2.671450</td>\n",
       "      <td>1.332095</td>\n",
       "      <td>630.531655</td>\n",
       "      <td>0.540265</td>\n",
       "      <td>0.073220</td>\n",
       "      <td>0.010235</td>\n",
       "      <td>...</td>\n",
       "      <td>2.253135</td>\n",
       "      <td>2138.209810</td>\n",
       "      <td>0.0</td>\n",
       "      <td>23226.733180</td>\n",
       "      <td>8136.551010</td>\n",
       "      <td>14039.533350</td>\n",
       "      <td>1049.892170</td>\n",
       "      <td>11.508290</td>\n",
       "      <td>1.782860</td>\n",
       "      <td>0.100380</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>57735.171256</td>\n",
       "      <td>4.605316</td>\n",
       "      <td>3.263815</td>\n",
       "      <td>5.933893</td>\n",
       "      <td>2.537784</td>\n",
       "      <td>0.758037</td>\n",
       "      <td>311.568408</td>\n",
       "      <td>0.924831</td>\n",
       "      <td>0.295887</td>\n",
       "      <td>0.104548</td>\n",
       "      <td>...</td>\n",
       "      <td>2.481890</td>\n",
       "      <td>2934.306106</td>\n",
       "      <td>0.0</td>\n",
       "      <td>11873.669826</td>\n",
       "      <td>5161.055339</td>\n",
       "      <td>7754.110833</td>\n",
       "      <td>1266.146212</td>\n",
       "      <td>7.539761</td>\n",
       "      <td>2.226049</td>\n",
       "      <td>0.300507</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>49999.750000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>433.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>15264.000000</td>\n",
       "      <td>4521.000000</td>\n",
       "      <td>8627.000000</td>\n",
       "      <td>274.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>99999.500000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>590.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>986.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>21531.000000</td>\n",
       "      <td>7246.000000</td>\n",
       "      <td>12803.000000</td>\n",
       "      <td>656.000000</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>149999.250000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>12.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>792.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>3222.250000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>29465.250000</td>\n",
       "      <td>10739.000000</td>\n",
       "      <td>18205.000000</td>\n",
       "      <td>1352.000000</td>\n",
       "      <td>14.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>199999.000000</td>\n",
       "      <td>39.000000</td>\n",
       "      <td>23.000000</td>\n",
       "      <td>52.000000</td>\n",
       "      <td>31.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>3038.000000</td>\n",
       "      <td>11.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>98.000000</td>\n",
       "      <td>55083.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>118130.000000</td>\n",
       "      <td>71631.000000</td>\n",
       "      <td>73172.000000</td>\n",
       "      <td>25140.000000</td>\n",
       "      <td>322.000000</td>\n",
       "      <td>48.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 31 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                  id          kills         deaths        assists  \\\n",
       "count  200000.000000  200000.000000  200000.000000  200000.000000   \n",
       "mean    99999.500000       5.798545       5.810190       8.322870   \n",
       "std     57735.171256       4.605316       3.263815       5.933893   \n",
       "min         0.000000       0.000000       0.000000       0.000000   \n",
       "25%     49999.750000       2.000000       3.000000       4.000000   \n",
       "50%     99999.500000       5.000000       6.000000       7.000000   \n",
       "75%    149999.250000       8.000000       8.000000      12.000000   \n",
       "max    199999.000000      39.000000      23.000000      52.000000   \n",
       "\n",
       "       largestkillingspree  largestmultikill  longesttimespentliving  \\\n",
       "count        200000.000000     200000.000000           200000.000000   \n",
       "mean              2.671450          1.332095              630.531655   \n",
       "std               2.537784          0.758037              311.568408   \n",
       "min               0.000000          0.000000                0.000000   \n",
       "25%               0.000000          1.000000              433.000000   \n",
       "50%               2.000000          1.000000              590.000000   \n",
       "75%               4.000000          2.000000              792.000000   \n",
       "max              31.000000          5.000000             3038.000000   \n",
       "\n",
       "         doublekills    triplekills    quadrakills  ...  totunitshealed  \\\n",
       "count  200000.000000  200000.000000  200000.000000  ...   200000.000000   \n",
       "mean        0.540265       0.073220       0.010235  ...        2.253135   \n",
       "std         0.924831       0.295887       0.104548  ...        2.481890   \n",
       "min         0.000000       0.000000       0.000000  ...        0.000000   \n",
       "25%         0.000000       0.000000       0.000000  ...        1.000000   \n",
       "50%         0.000000       0.000000       0.000000  ...        1.000000   \n",
       "75%         1.000000       0.000000       0.000000  ...        3.000000   \n",
       "max        11.000000       7.000000       4.000000  ...       98.000000   \n",
       "\n",
       "        dmgtoturrets    timecc    totdmgtaken  magicdmgtaken   physdmgtaken  \\\n",
       "count  200000.000000  200000.0  200000.000000  200000.000000  200000.000000   \n",
       "mean     2138.209810       0.0   23226.733180    8136.551010   14039.533350   \n",
       "std      2934.306106       0.0   11873.669826    5161.055339    7754.110833   \n",
       "min         0.000000       0.0       0.000000       0.000000       0.000000   \n",
       "25%         0.000000       0.0   15264.000000    4521.000000    8627.000000   \n",
       "50%       986.000000       0.0   21531.000000    7246.000000   12803.000000   \n",
       "75%      3222.250000       0.0   29465.250000   10739.000000   18205.000000   \n",
       "max     55083.000000       0.0  118130.000000   71631.000000   73172.000000   \n",
       "\n",
       "        truedmgtaken    wardsplaced    wardskilled     firstblood  \n",
       "count  200000.000000  200000.000000  200000.000000  200000.000000  \n",
       "mean     1049.892170      11.508290       1.782860       0.100380  \n",
       "std      1266.146212       7.539761       2.226049       0.300507  \n",
       "min         0.000000       0.000000       0.000000       0.000000  \n",
       "25%       274.000000       7.000000       0.000000       0.000000  \n",
       "50%       656.000000      10.000000       1.000000       0.000000  \n",
       "75%      1352.000000      14.000000       3.000000       0.000000  \n",
       "max     25140.000000     322.000000      48.000000       1.000000  \n",
       "\n",
       "[8 rows x 31 columns]"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feature.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 200000 entries, 0 to 19999\n",
      "Data columns (total 31 columns):\n",
      " #   Column                  Non-Null Count   Dtype\n",
      "---  ------                  --------------   -----\n",
      " 0   id                      200000 non-null  int64\n",
      " 1   kills                   200000 non-null  int64\n",
      " 2   deaths                  200000 non-null  int64\n",
      " 3   assists                 200000 non-null  int64\n",
      " 4   largestkillingspree     200000 non-null  int64\n",
      " 5   largestmultikill        200000 non-null  int64\n",
      " 6   longesttimespentliving  200000 non-null  int64\n",
      " 7   doublekills             200000 non-null  int64\n",
      " 8   triplekills             200000 non-null  int64\n",
      " 9   quadrakills             200000 non-null  int64\n",
      " 10  pentakills              200000 non-null  int64\n",
      " 11  totdmgdealt             200000 non-null  int64\n",
      " 12  magicdmgdealt           200000 non-null  int64\n",
      " 13  physicaldmgdealt        200000 non-null  int64\n",
      " 14  truedmgdealt            200000 non-null  int64\n",
      " 15  largestcrit             200000 non-null  int64\n",
      " 16  totdmgtochamp           200000 non-null  int64\n",
      " 17  magicdmgtochamp         200000 non-null  int64\n",
      " 18  physdmgtochamp          200000 non-null  int64\n",
      " 19  truedmgtochamp          200000 non-null  int64\n",
      " 20  totheal                 200000 non-null  int64\n",
      " 21  totunitshealed          200000 non-null  int64\n",
      " 22  dmgtoturrets            200000 non-null  int64\n",
      " 23  timecc                  200000 non-null  int64\n",
      " 24  totdmgtaken             200000 non-null  int64\n",
      " 25  magicdmgtaken           200000 non-null  int64\n",
      " 26  physdmgtaken            200000 non-null  int64\n",
      " 27  truedmgtaken            200000 non-null  int64\n",
      " 28  wardsplaced             200000 non-null  int64\n",
      " 29  wardskilled             200000 non-null  int64\n",
      " 30  firstblood              200000 non-null  int64\n",
      "dtypes: int64(31)\n",
      "memory usage: 48.8 MB\n"
     ]
    }
   ],
   "source": [
    "feature.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/distributions.py:2511: UserWarning: Dataset has 0 variance; skipping density estimate. Pass `warn_singular=False` to disable this warning.\n",
      "  kdeplot(**{axis: a}, ax=ax, color=kde_color, **kde_kws)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n",
      "/home/zhangzrjerry/anaconda3/envs/globalenv/lib/python3.10/site-packages/seaborn/axisgrid.py:848: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  func(*plot_args, **plot_kwargs)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Error in callback <function flush_figures at 0x7f252de1dfc0> (for post_execute):\n"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "File \u001b[0;32m~/anaconda3/envs/globalenv/lib/python3.10/site-packages/PIL/ImageFile.py:518\u001b[0m, in \u001b[0;36m_save\u001b[0;34m(im, fp, tile, bufsize)\u001b[0m\n\u001b[1;32m    517\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 518\u001b[0m     fh \u001b[39m=\u001b[39m fp\u001b[39m.\u001b[39;49mfileno()\n\u001b[1;32m    519\u001b[0m     fp\u001b[39m.\u001b[39mflush()\n",
      "\u001b[0;31mAttributeError\u001b[0m: '_idat' object has no attribute 'fileno'",
      "\nDuring handling of the above exception, another exception occurred:\n",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "File \u001b[0;32m~/anaconda3/envs/globalenv/lib/python3.10/site-packages/matplotlib_inline/backend_inline.py:126\u001b[0m, in \u001b[0;36mflush_figures\u001b[0;34m()\u001b[0m\n\u001b[1;32m    123\u001b[0m \u001b[39mif\u001b[39;00m InlineBackend\u001b[39m.\u001b[39minstance()\u001b[39m.\u001b[39mclose_figures:\n\u001b[1;32m    124\u001b[0m     \u001b[39m# ignore the tracking, just draw and close all figures\u001b[39;00m\n\u001b[1;32m    125\u001b[0m     \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 126\u001b[0m         \u001b[39mreturn\u001b[39;00m show(\u001b[39mTrue\u001b[39;49;00m)\n\u001b[1;32m    127\u001b[0m     \u001b[39mexcept\u001b[39;00m \u001b[39mException\u001b[39;00m \u001b[39mas\u001b[39;00m e:\n\u001b[1;32m    128\u001b[0m         \u001b[39m# safely show traceback if in IPython, else raise\u001b[39;00m\n\u001b[1;32m    129\u001b[0m         ip \u001b[39m=\u001b[39m get_ipython()\n",
      "File \u001b[0;32m~/anaconda3/envs/globalenv/lib/python3.10/site-packages/matplotlib_inline/backend_inline.py:90\u001b[0m, in \u001b[0;36mshow\u001b[0;34m(close, block)\u001b[0m\n\u001b[1;32m     88\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[1;32m     89\u001b[0m     \u001b[39mfor\u001b[39;00m figure_manager \u001b[39min\u001b[39;00m Gcf\u001b[39m.\u001b[39mget_all_fig_managers():\n\u001b[0;32m---> 90\u001b[0m         display(\n\u001b[1;32m     91\u001b[0m             figure_manager\u001b[39m.\u001b[39;49mcanvas\u001b[39m.\u001b[39;49mfigure,\n\u001b[1;32m     92\u001b[0m             metadata\u001b[39m=\u001b[39;49m_fetch_figure_metadata(figure_manager\u001b[39m.\u001b[39;49mcanvas\u001b[39m.\u001b[39;49mfigure)\n\u001b[1;32m     93\u001b[0m         )\n\u001b[1;32m     94\u001b[0m \u001b[39mfinally\u001b[39;00m:\n\u001b[1;32m     95\u001b[0m     show\u001b[39m.\u001b[39m_to_draw \u001b[39m=\u001b[39m []\n",
      "File \u001b[0;32m~/anaconda3/envs/globalenv/lib/python3.10/site-packages/IPython/core/display_functions.py:298\u001b[0m, in \u001b[0;36mdisplay\u001b[0;34m(include, exclude, metadata, transient, display_id, raw, clear, *objs, **kwargs)\u001b[0m\n\u001b[1;32m    296\u001b[0m     publish_display_data(data\u001b[39m=\u001b[39mobj, metadata\u001b[39m=\u001b[39mmetadata, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n\u001b[1;32m    297\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m--> 298\u001b[0m     format_dict, md_dict \u001b[39m=\u001b[39m \u001b[39mformat\u001b[39;49m(obj, include\u001b[39m=\u001b[39;49minclude, exclude\u001b[39m=\u001b[39;49mexclude)\n\u001b[1;32m    299\u001b[0m     \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m format_dict:\n\u001b[1;32m    300\u001b[0m         \u001b[39m# nothing to display (e.g. _ipython_display_ took over)\u001b[39;00m\n\u001b[1;32m    301\u001b[0m         \u001b[39mcontinue\u001b[39;00m\n",
      "File \u001b[0;32m~/anaconda3/envs/globalenv/lib/python3.10/site-packages/IPython/core/formatters.py:177\u001b[0m, in \u001b[0;36mDisplayFormatter.format\u001b[0;34m(self, obj, include, exclude)\u001b[0m\n\u001b[1;32m    175\u001b[0m md \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m\n\u001b[1;32m    176\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 177\u001b[0m     data \u001b[39m=\u001b[39m formatter(obj)\n\u001b[1;32m    178\u001b[0m \u001b[39mexcept\u001b[39;00m:\n\u001b[1;32m    179\u001b[0m     \u001b[39m# FIXME: log the exception\u001b[39;00m\n\u001b[1;32m    180\u001b[0m     \u001b[39mraise\u001b[39;00m\n",
      "File \u001b[0;32m<decorator-gen-2>:2\u001b[0m, in \u001b[0;36m__call__\u001b[0;34m(self, obj)\u001b[0m\n",
      "File \u001b[0;32m~/anaconda3/envs/globalenv/lib/python3.10/site-packages/IPython/core/formatters.py:221\u001b[0m, in \u001b[0;36mcatch_format_error\u001b[0;34m(method, self, *args, **kwargs)\u001b[0m\n\u001b[1;32m    219\u001b[0m \u001b[39m\u001b[39m\u001b[39m\"\"\"show traceback on failed format call\"\"\"\u001b[39;00m\n\u001b[1;32m    220\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 221\u001b[0m     r \u001b[39m=\u001b[39m method(\u001b[39mself\u001b[39;49m, \u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\u001b[1;32m    222\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mNotImplementedError\u001b[39;00m:\n\u001b[1;32m    223\u001b[0m     \u001b[39m# don't warn on NotImplementedErrors\u001b[39;00m\n\u001b[1;32m    224\u001b[0m     \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_check_return(\u001b[39mNone\u001b[39;00m, args[\u001b[39m0\u001b[39m])\n",
      "File \u001b[0;32m~/anaconda3/envs/globalenv/lib/python3.10/site-packages/IPython/core/formatters.py:338\u001b[0m, in \u001b[0;36mBaseFormatter.__call__\u001b[0;34m(self, obj)\u001b[0m\n\u001b[1;32m    336\u001b[0m     \u001b[39mpass\u001b[39;00m\n\u001b[1;32m    337\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m--> 338\u001b[0m     \u001b[39mreturn\u001b[39;00m printer(obj)\n\u001b[1;32m    339\u001b[0m \u001b[39m# Finally look for special method names\u001b[39;00m\n\u001b[1;32m    340\u001b[0m method \u001b[39m=\u001b[39m get_real_method(obj, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mprint_method)\n",
      "File \u001b[0;32m~/anaconda3/envs/globalenv/lib/python3.10/site-packages/IPython/core/pylabtools.py:152\u001b[0m, in \u001b[0;36mprint_figure\u001b[0;34m(fig, fmt, bbox_inches, base64, **kwargs)\u001b[0m\n\u001b[1;32m    149\u001b[0m     \u001b[39mfrom\u001b[39;00m \u001b[39mmatplotlib\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mbackend_bases\u001b[39;00m \u001b[39mimport\u001b[39;00m FigureCanvasBase\n\u001b[1;32m    150\u001b[0m     FigureCanvasBase(fig)\n\u001b[0;32m--> 152\u001b[0m fig\u001b[39m.\u001b[39;49mcanvas\u001b[39m.\u001b[39;49mprint_figure(bytes_io, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkw)\n\u001b[1;32m    153\u001b[0m data \u001b[39m=\u001b[39m bytes_io\u001b[39m.\u001b[39mgetvalue()\n\u001b[1;32m    154\u001b[0m \u001b[39mif\u001b[39;00m fmt \u001b[39m==\u001b[39m \u001b[39m'\u001b[39m\u001b[39msvg\u001b[39m\u001b[39m'\u001b[39m:\n",
      "File \u001b[0;32m~/anaconda3/envs/globalenv/lib/python3.10/site-packages/matplotlib/backend_bases.py:2338\u001b[0m, in \u001b[0;36mFigureCanvasBase.print_figure\u001b[0;34m(self, filename, dpi, facecolor, edgecolor, orientation, format, bbox_inches, pad_inches, bbox_extra_artists, backend, **kwargs)\u001b[0m\n\u001b[1;32m   2334\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[1;32m   2335\u001b[0m     \u001b[39m# _get_renderer may change the figure dpi (as vector formats\u001b[39;00m\n\u001b[1;32m   2336\u001b[0m     \u001b[39m# force the figure dpi to 72), so we need to set it again here.\u001b[39;00m\n\u001b[1;32m   2337\u001b[0m     \u001b[39mwith\u001b[39;00m cbook\u001b[39m.\u001b[39m_setattr_cm(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mfigure, dpi\u001b[39m=\u001b[39mdpi):\n\u001b[0;32m-> 2338\u001b[0m         result \u001b[39m=\u001b[39m print_method(\n\u001b[1;32m   2339\u001b[0m             filename,\n\u001b[1;32m   2340\u001b[0m             facecolor\u001b[39m=\u001b[39;49mfacecolor,\n\u001b[1;32m   2341\u001b[0m             edgecolor\u001b[39m=\u001b[39;49medgecolor,\n\u001b[1;32m   2342\u001b[0m             orientation\u001b[39m=\u001b[39;49morientation,\n\u001b[1;32m   2343\u001b[0m             bbox_inches_restore\u001b[39m=\u001b[39;49m_bbox_inches_restore,\n\u001b[1;32m   2344\u001b[0m             \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\u001b[1;32m   2345\u001b[0m \u001b[39mfinally\u001b[39;00m:\n\u001b[1;32m   2346\u001b[0m     \u001b[39mif\u001b[39;00m bbox_inches \u001b[39mand\u001b[39;00m restore_bbox:\n",
      "File \u001b[0;32m~/anaconda3/envs/globalenv/lib/python3.10/site-packages/matplotlib/backend_bases.py:2204\u001b[0m, in \u001b[0;36mFigureCanvasBase._switch_canvas_and_return_print_method.<locals>.<lambda>\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m   2200\u001b[0m     optional_kws \u001b[39m=\u001b[39m {  \u001b[39m# Passed by print_figure for other renderers.\u001b[39;00m\n\u001b[1;32m   2201\u001b[0m         \u001b[39m\"\u001b[39m\u001b[39mdpi\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39m\"\u001b[39m\u001b[39mfacecolor\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39m\"\u001b[39m\u001b[39medgecolor\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39m\"\u001b[39m\u001b[39morientation\u001b[39m\u001b[39m\"\u001b[39m,\n\u001b[1;32m   2202\u001b[0m         \u001b[39m\"\u001b[39m\u001b[39mbbox_inches_restore\u001b[39m\u001b[39m\"\u001b[39m}\n\u001b[1;32m   2203\u001b[0m     skip \u001b[39m=\u001b[39m optional_kws \u001b[39m-\u001b[39m {\u001b[39m*\u001b[39minspect\u001b[39m.\u001b[39msignature(meth)\u001b[39m.\u001b[39mparameters}\n\u001b[0;32m-> 2204\u001b[0m     print_method \u001b[39m=\u001b[39m functools\u001b[39m.\u001b[39mwraps(meth)(\u001b[39mlambda\u001b[39;00m \u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs: meth(\n\u001b[1;32m   2205\u001b[0m         \u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49m{k: v \u001b[39mfor\u001b[39;49;00m k, v \u001b[39min\u001b[39;49;00m kwargs\u001b[39m.\u001b[39;49mitems() \u001b[39mif\u001b[39;49;00m k \u001b[39mnot\u001b[39;49;00m \u001b[39min\u001b[39;49;00m skip}))\n\u001b[1;32m   2206\u001b[0m \u001b[39melse\u001b[39;00m:  \u001b[39m# Let third-parties do as they see fit.\u001b[39;00m\n\u001b[1;32m   2207\u001b[0m     print_method \u001b[39m=\u001b[39m meth\n",
      "File \u001b[0;32m~/anaconda3/envs/globalenv/lib/python3.10/site-packages/matplotlib/_api/deprecation.py:410\u001b[0m, in \u001b[0;36mdelete_parameter.<locals>.wrapper\u001b[0;34m(*inner_args, **inner_kwargs)\u001b[0m\n\u001b[1;32m    400\u001b[0m     deprecation_addendum \u001b[39m=\u001b[39m (\n\u001b[1;32m    401\u001b[0m         \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mIf any parameter follows \u001b[39m\u001b[39m{\u001b[39;00mname\u001b[39m!r}\u001b[39;00m\u001b[39m, they should be passed as \u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m    402\u001b[0m         \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mkeyword, not positionally.\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m    403\u001b[0m     warn_deprecated(\n\u001b[1;32m    404\u001b[0m         since,\n\u001b[1;32m    405\u001b[0m         name\u001b[39m=\u001b[39m\u001b[39mrepr\u001b[39m(name),\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m    408\u001b[0m                  \u001b[39melse\u001b[39;00m deprecation_addendum,\n\u001b[1;32m    409\u001b[0m         \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n\u001b[0;32m--> 410\u001b[0m \u001b[39mreturn\u001b[39;00m func(\u001b[39m*\u001b[39;49minner_args, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49minner_kwargs)\n",
      "File \u001b[0;32m~/anaconda3/envs/globalenv/lib/python3.10/site-packages/matplotlib/backends/backend_agg.py:517\u001b[0m, in \u001b[0;36mFigureCanvasAgg.print_png\u001b[0;34m(self, filename_or_obj, metadata, pil_kwargs, *args)\u001b[0m\n\u001b[1;32m    468\u001b[0m \u001b[39m@_api\u001b[39m\u001b[39m.\u001b[39mdelete_parameter(\u001b[39m\"\u001b[39m\u001b[39m3.5\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39m\"\u001b[39m\u001b[39margs\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m    469\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mprint_png\u001b[39m(\u001b[39mself\u001b[39m, filename_or_obj, \u001b[39m*\u001b[39margs,\n\u001b[1;32m    470\u001b[0m               metadata\u001b[39m=\u001b[39m\u001b[39mNone\u001b[39;00m, pil_kwargs\u001b[39m=\u001b[39m\u001b[39mNone\u001b[39;00m):\n\u001b[1;32m    471\u001b[0m \u001b[39m    \u001b[39m\u001b[39m\"\"\"\u001b[39;00m\n\u001b[1;32m    472\u001b[0m \u001b[39m    Write the figure to a PNG file.\u001b[39;00m\n\u001b[1;32m    473\u001b[0m \n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m    515\u001b[0m \u001b[39m        *metadata*, including the default 'Software' key.\u001b[39;00m\n\u001b[1;32m    516\u001b[0m \u001b[39m    \"\"\"\u001b[39;00m\n\u001b[0;32m--> 517\u001b[0m     \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_print_pil(filename_or_obj, \u001b[39m\"\u001b[39;49m\u001b[39mpng\u001b[39;49m\u001b[39m\"\u001b[39;49m, pil_kwargs, metadata)\n",
      "File \u001b[0;32m~/anaconda3/envs/globalenv/lib/python3.10/site-packages/matplotlib/backends/backend_agg.py:464\u001b[0m, in \u001b[0;36mFigureCanvasAgg._print_pil\u001b[0;34m(self, filename_or_obj, fmt, pil_kwargs, metadata)\u001b[0m\n\u001b[1;32m    459\u001b[0m \u001b[39m\u001b[39m\u001b[39m\"\"\"\u001b[39;00m\n\u001b[1;32m    460\u001b[0m \u001b[39mDraw the canvas, then save it using `.image.imsave` (to which\u001b[39;00m\n\u001b[1;32m    461\u001b[0m \u001b[39m*pil_kwargs* and *metadata* are forwarded).\u001b[39;00m\n\u001b[1;32m    462\u001b[0m \u001b[39m\"\"\"\u001b[39;00m\n\u001b[1;32m    463\u001b[0m FigureCanvasAgg\u001b[39m.\u001b[39mdraw(\u001b[39mself\u001b[39m)\n\u001b[0;32m--> 464\u001b[0m mpl\u001b[39m.\u001b[39;49mimage\u001b[39m.\u001b[39;49mimsave(\n\u001b[1;32m    465\u001b[0m     filename_or_obj, \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mbuffer_rgba(), \u001b[39mformat\u001b[39;49m\u001b[39m=\u001b[39;49mfmt, origin\u001b[39m=\u001b[39;49m\u001b[39m\"\u001b[39;49m\u001b[39mupper\u001b[39;49m\u001b[39m\"\u001b[39;49m,\n\u001b[1;32m    466\u001b[0m     dpi\u001b[39m=\u001b[39;49m\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mfigure\u001b[39m.\u001b[39;49mdpi, metadata\u001b[39m=\u001b[39;49mmetadata, pil_kwargs\u001b[39m=\u001b[39;49mpil_kwargs)\n",
      "File \u001b[0;32m~/anaconda3/envs/globalenv/lib/python3.10/site-packages/matplotlib/image.py:1667\u001b[0m, in \u001b[0;36mimsave\u001b[0;34m(fname, arr, vmin, vmax, cmap, format, origin, dpi, metadata, pil_kwargs)\u001b[0m\n\u001b[1;32m   1665\u001b[0m pil_kwargs\u001b[39m.\u001b[39msetdefault(\u001b[39m\"\u001b[39m\u001b[39mformat\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39mformat\u001b[39m)\n\u001b[1;32m   1666\u001b[0m pil_kwargs\u001b[39m.\u001b[39msetdefault(\u001b[39m\"\u001b[39m\u001b[39mdpi\u001b[39m\u001b[39m\"\u001b[39m, (dpi, dpi))\n\u001b[0;32m-> 1667\u001b[0m image\u001b[39m.\u001b[39;49msave(fname, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mpil_kwargs)\n",
      "File \u001b[0;32m~/anaconda3/envs/globalenv/lib/python3.10/site-packages/PIL/Image.py:2431\u001b[0m, in \u001b[0;36mImage.save\u001b[0;34m(self, fp, format, **params)\u001b[0m\n\u001b[1;32m   2428\u001b[0m         fp \u001b[39m=\u001b[39m builtins\u001b[39m.\u001b[39mopen(filename, \u001b[39m\"\u001b[39m\u001b[39mw+b\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m   2430\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m-> 2431\u001b[0m     save_handler(\u001b[39mself\u001b[39;49m, fp, filename)\n\u001b[1;32m   2432\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mException\u001b[39;00m:\n\u001b[1;32m   2433\u001b[0m     \u001b[39mif\u001b[39;00m open_fp:\n",
      "File \u001b[0;32m~/anaconda3/envs/globalenv/lib/python3.10/site-packages/PIL/PngImagePlugin.py:1420\u001b[0m, in \u001b[0;36m_save\u001b[0;34m(im, fp, filename, chunk, save_all)\u001b[0m\n\u001b[1;32m   1418\u001b[0m     _write_multiple_frames(im, fp, chunk, rawmode, default_image, append_images)\n\u001b[1;32m   1419\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m-> 1420\u001b[0m     ImageFile\u001b[39m.\u001b[39;49m_save(im, _idat(fp, chunk), [(\u001b[39m\"\u001b[39;49m\u001b[39mzip\u001b[39;49m\u001b[39m\"\u001b[39;49m, (\u001b[39m0\u001b[39;49m, \u001b[39m0\u001b[39;49m) \u001b[39m+\u001b[39;49m im\u001b[39m.\u001b[39;49msize, \u001b[39m0\u001b[39;49m, rawmode)])\n\u001b[1;32m   1422\u001b[0m \u001b[39mif\u001b[39;00m info:\n\u001b[1;32m   1423\u001b[0m     \u001b[39mfor\u001b[39;00m info_chunk \u001b[39min\u001b[39;00m info\u001b[39m.\u001b[39mchunks:\n",
      "File \u001b[0;32m~/anaconda3/envs/globalenv/lib/python3.10/site-packages/PIL/ImageFile.py:522\u001b[0m, in \u001b[0;36m_save\u001b[0;34m(im, fp, tile, bufsize)\u001b[0m\n\u001b[1;32m    520\u001b[0m     _encode_tile(im, fp, tile, bufsize, fh)\n\u001b[1;32m    521\u001b[0m \u001b[39mexcept\u001b[39;00m (\u001b[39mAttributeError\u001b[39;00m, io\u001b[39m.\u001b[39mUnsupportedOperation) \u001b[39mas\u001b[39;00m exc:\n\u001b[0;32m--> 522\u001b[0m     _encode_tile(im, fp, tile, bufsize, \u001b[39mNone\u001b[39;49;00m, exc)\n\u001b[1;32m    523\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mhasattr\u001b[39m(fp, \u001b[39m\"\u001b[39m\u001b[39mflush\u001b[39m\u001b[39m\"\u001b[39m):\n\u001b[1;32m    524\u001b[0m     fp\u001b[39m.\u001b[39mflush()\n",
      "File \u001b[0;32m~/anaconda3/envs/globalenv/lib/python3.10/site-packages/PIL/ImageFile.py:541\u001b[0m, in \u001b[0;36m_encode_tile\u001b[0;34m(im, fp, tile, bufsize, fh, exc)\u001b[0m\n\u001b[1;32m    538\u001b[0m \u001b[39mif\u001b[39;00m exc:\n\u001b[1;32m    539\u001b[0m     \u001b[39m# compress to Python file-compatible object\u001b[39;00m\n\u001b[1;32m    540\u001b[0m     \u001b[39mwhile\u001b[39;00m \u001b[39mTrue\u001b[39;00m:\n\u001b[0;32m--> 541\u001b[0m         l, s, d \u001b[39m=\u001b[39m encoder\u001b[39m.\u001b[39;49mencode(bufsize)\n\u001b[1;32m    542\u001b[0m         fp\u001b[39m.\u001b[39mwrite(d)\n\u001b[1;32m    543\u001b[0m         \u001b[39mif\u001b[39;00m s:\n",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "sns.FacetGrid(pd.melt(feature), col=\"variable\",  col_wrap=4, sharex=False, sharey=False).map(sns.distplot, \"value\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot: >"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxUAAALtCAYAAABeq0nKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeViNaeMH8O9pO+2lJDElUSljSVliEDJZXztDrzRDxowQMjS2MCMzYwtjN9UYxGCMl+zjWLKUJctI1sRMhFG0ONWp3x9+zjjT3l1zqO/nup7r0nPu7/Pc55Gcu3uT5Ofn54OIiIiIiKicNNRdASIiIiIierexUUFERERERELYqCAiIiIiIiFsVBARERERkRA2KoiIiIiISAgbFUREREREJISNCiIiIiIiEsJGBRERERERCWGjgoiIiIiIhLBRQUREREREQtioICIiIiJ6ix0/fhy9e/dGnTp1IJFIsGvXrhIzMpkMLVq0gFQqRcOGDREeHl6pdWSjgoiIiIjoLZaRkYFmzZrh+++/L1X5u3fvomfPnujUqRPi4uIQEBCAUaNG4cCBA5VWR0l+fn5+pV2diIiIiIgqjEQiwS+//IK+ffsWWWbq1KnYu3cvrl69qjz30UcfITU1Ffv376+UerGngoiIiIjoXySXy/H8+XOVQy6XV9j1T58+DU9PT5VzXl5eOH36dIXd45+0Ku3KRERERERvqTESW7Xdu/ZsX8yZM0fl3OzZsxEcHFwh13/48CEsLS1VzllaWuL58+fIysqCnp5ehdznTWxUEBERERH9i4KCgjBp0iSVc1KpVE21qRhsVBARERFRtaMpUd+9pVJppTYiateujUePHqmce/ToEYyNjSullwLgnAoiIiIioirF3d0dR44cUTl36NAhuLu7V9o92VNBRERERNWOpkSNXRVllJ6ejlu3bim/vnv3LuLi4mBmZgYbGxsEBQXhjz/+wI8//ggAGDNmDFasWIEvvvgCn3zyCX777Tds27YNe/furbQ6sqeCiIiIiOgtdu7cObi4uMDFxQUAMGnSJLi4uGDWrFkAgOTkZCQlJSnL169fH3v37sWhQ4fQrFkzLFq0COvXr4eXl1el1ZH7VBARERFRtTNes77a7r1McVdt964sHP5ERERERNWOOidqV0Uc/kRERERERELYU0FERERE1c67NFH7XcCeCiIiIiIiEsJGBRERERERCeHwJyIiIiKqdjhRu2Kxp4KIiIiIiISwp4KIiIiIqh1O1K5Y7KkgIiIiIiIh7KkgIiIiomqHcyoqFnsqiIiIiIhICBsVREREREQkhMOfiIiIiKja4UTtisWeCiIiIiIiEsKeCiIiIiKqdvib9YrF50lERERERELYqCAiIiIiIiEc/kRERERE1Q4nalcs9lQQEREREZEQ9lQQERERUbXDHbUrFnsqiIiIiIhICHsqiIiIiKja4ZyKisWeCiIiIiIiEsJGBRERERERCeHwJyIiIiKqdjhRu2Kxp4KIiIiIiISwp4KIiIiIqh1O1K5Y7KkgIiIiIiIhbFQQEREREZEQDn8iIiIiomqHE7UrFnsqiIiIiIhICHsqiIiIiKja4UTtisWeCiIiIiIiEsKeCiIiIiKqdjinomKxp4KIiIiIiISwUUFEREREREI4/ImIiIiIqh0Of6pY7KkgIiIiIiIh7KkgIiIiomqHS8pWLPZUEBERERGREDYqiIiIiIhICIc/EREREVG1w4naFYs9FUREREREJIQ9FURERERU7XCidsViTwUREREREQlhTwURERERVTucU1Gx2FNBRERERERC2KggIiIiIiIhHP5ERERERNUOJ2pXLPZUEBERERGREPZUEBEREVG1w4naFYs9FUREREREJISNCiIiIiIiEsLhT1QljJHYCuUt9++vmIqUk6aGWB+sIi9frfcXVd3rL+pd//7h83u3x2CIvv85Xo2E8nMPJQjl1a26f//M6uqotntzonbFYk8F/es8PDwQEBBQ5Ou2trZYunTpv1YfIiIiIhLDngr61+3cuRPa2trqrgYRERFVYxrsqahQbFTQv87MzEzdVSAiIiKiCsThT/Sve3P4U0pKCnr37g09PT3Ur18fmzZtUm/liIiIqFqQaErUdlRF7KkgtfL19cWff/6Jo0ePQltbG+PHj0dKSoq6q0VEREREZcBGBanNjRs3sG/fPsTExKBly5YAgA0bNsDJyUnNNSMiIiKismCjgtQmPj4eWlpacHV1VZ5r1KgRTE1Ni83J5XLI5XKVcwrkQxNVszuRiIiIKp5GFR2GpC6cU0HvnJCQEJiYmKgcF5Gm7moRERERVVtsVJDaNGrUCLm5uTh//rzyXEJCAlJTU4vNBQUFIS0tTeVwgUkl15aIiIiqEommhtqOqojDn0htHB0d0a1bN3z66adYtWoVtLS0EBAQAD09vWJzUqkUUqlU5RyHPhERERGpT9VsKtE7IywsDHXq1EHHjh3Rv39/jB49GrVq1VJ3tYiIiIioDNhTQf86mUym/HPt2rWxZ88eldeHDx/+L9eIiIiIqpuqul+EurCngoiIiIiIhLCngoiIiIiqHS4pW7HYU0FERERERELYU0FVguX+/UL5R926CeU//+OSUP76kwyhfK1PBgjl67asK5R/OGWNUL7mvI+F8g7B84Tyd/TshPLxgn9/HU4uE8pnDZ4ulK/1Z6xQflVaPaH8qGZiizNc7t9bKO+0c69QXuvgaqG8ZochQvkEuYFQ/uPVZ4Typz9rKJQX9eX7Yr8fVRiJff9JcuUlFypGskJfKP+d7I5QXkdL7Pl96m4jlKeqgz0VVG4eHh4ICAgo9DVfX1/07du3yLK2trZYunRppdaPiIiIqCgSDQ21HVUReyqoUoSGhiI/P1/d1SAiIiKifwEbFVQpTEy4wzURERG9vThRu2JVzf4XUou9e/fCxMQEmzZtKjD8qTj5+fkIDg6GjY0NpFIp6tSpg/Hjx1duZYmIiIiowrCngirE5s2bMWbMGGzevBm9evXCoUOHSp3dsWMHlixZgsjISDRu3BgPHz7EpUtiE5+JiIiIisPN7yoWGxUk7Pvvv8f06dPxv//9Dx07dixzPikpCbVr14anpye0tbVhY2ODVq1aVUJNiYiIiKgysFFBQrZv346UlBRER0ejZcuW5brGoEGDsHTpUtjZ2aFbt27o0aMHevfuDS2twr895XI55HLVJfxys7OhpaNTrvsTERERkRjOqSAhLi4usLCwwA8//FDu1Z6sra2RkJCAlStXQk9PD59//jk6dOiAnJycQsuHhITAxMRE5Ti5da3I2yAiIqJqRqKpobajKqqa74r+NQ0aNMDRo0fx66+/Yty4ceW+jp6eHnr37o1ly5ZBJpPh9OnTuHLlSqFlg4KCkJaWpnJ8MGR0ue9NRERE9Lb7/vvvYWtrC11dXbRu3RoxMTHFll+6dCkcHR2hp6cHa2trTJw4ES9fvqy0+nH4EwlzcHDA0aNH4eHhAS0trTJvahceHg6FQoHWrVtDX18fP/30E/T09FCvXuG79EqlUkilUpVzHPpEREREZfEuLSm7detWTJo0CatXr0br1q2xdOlSeHl5ISEhAbVqFdwVfvPmzZg2bRp++OEHtG3bFjdu3ICvry8kEgkWL15cKXVko4IqhKOjI3777Td4eHhAU1OzTFlTU1MsWLAAkyZNgkKhQJMmTfC///0P5ubmlVRbIiIionfH4sWL4efnh48//hgAsHr1auzduxc//PADpk2bVqD8qVOn0K5dOwwbNgwAYGtri6FDh+Ls2bOVVkc2KqjcZDKZytdOTk549OhRqcomJiYq/9y3b99S72lBRERE9K4rbNGZwkZiAEB2djbOnz+PoKAg5TkNDQ14enri9OnThV6/bdu2+OmnnxATE4NWrVrhzp07iIqKwvDhwyv2jbyBcyqIiIiIqNqRaEjUdhS26ExISEih9Xzy5AkUCgUsLS1VzltaWuLhw4eFZoYNG4a5c+figw8+gLa2Nho0aAAPDw98+eWXFf4cX2OjgoiIiIjoX1TYojNv9kSIkslkmD9/PlauXIkLFy5g586d2Lt3L+bNm1dh9/gnDn8iIiIiompHQ41LuxY11KkwNWvWhKamZoEh5o8ePULt2rULzcycORPDhw/HqFGjAABNmjRBRkYGRo8ejenTp0NDo+LfOxsVRAA+/+OSUH5l3WZC+ZH3LgrlJw2ZL5Sf0+99ofznoSeF8tPHrRTK70kUWyIvK/tPobwir3x7tLzWZsh0ofytp2Lv/0kNF6H8H3f/EMofvpculP/wpx+F8reeF74nTmnpfTBKKJ8uzxPKP0gT+/vv2bbwlfZKa8TBv4Tym30aCOXlsq1Cec0aBVfOKVPeoq5QvlbjLkL50e5if3+XHr4Qym+9lCyUn9XVWChfHejo6MDV1RVHjhxRzkHNy8vDkSNH4O/vX2gmMzOzQMPh9UI65d1XrCQc/lTNeXh4ICAgoFLvIZPJIJFIkJqaWqn3ISIiIiotiaZEbUdZTZo0CevWrUNERATi4+Px2WefISMjQ7kalI+Pj8rwqd69e2PVqlWIjIzE3bt3cejQIcycORO9e/cu8yqdpcWeCqpQHh4eaN68eZn3qiAiIiKiwg0ZMgSPHz/GrFmz8PDhQzRv3hz79+9XTt5OSkpS6ZmYMWMGJBIJZsyYgT/++AMWFhbo3bs3vv7660qrIxsVRERERERvOX9//yKHO/1z6X4tLS3Mnj0bs2fP/hdq9gqHP1UjGRkZ8PHxgaGhIaysrLBo0SKV1+VyOQIDA1G3bl0YGBigdevWKt+kT58+xdChQ1G3bl3o6+ujSZMm2LJli/J1X19fHDt2DKGhoZBIJJBIJCr7UZw/fx5ubm7Q19dH27ZtkZCQoHzt0qVL6NSpE4yMjGBsbAxXV1ecO3eu0p4FERERVW/v0vCndwEbFdXIlClTcOzYMfz66684ePAgZDIZLly4oHzd398fp0+fRmRkJC5fvoxBgwahW7duuHnzJgDg5cuXcHV1xd69e3H16lWMHj0aw4cPR0xMDAAgNDQU7u7u8PPzQ3JyMpKTk2Ftba28/vTp07Fo0SKcO3cOWlpa+OSTT5SveXt747333kNsbCzOnz+PadOmQVtb+196MkREREQkgsOfqon09HRs2LABP/30E7p0ebXSREREBN577z0Ar8bihYWFISkpCXXq1AEABAYGYv/+/QgLC8P8+fNRt25dBAYGKq85btw4HDhwANu2bUOrVq1gYmICHR0d6OvrF7rE2ddff42OHTsCAKZNm4aePXvi5cuX0NXVRVJSEqZMmYJGjRoBAOzt7Sv1eRAREVH1ps4lZasiNiqqidu3byM7OxutW7dWnjMzM4OjoyMA4MqVK1AoFHBwcFDJyeVymJubAwAUCgXmz5+Pbdu24Y8//kB2djbkcjn09fVLVYemTZsq/2xlZQUASElJgY2NDSZNmoRRo0Zh48aN8PT0xKBBg9CgQeHLDBa2tX1udja0dHRKVQ8iIiIiqlhsohGAVz0ZmpqaOH/+POLi4pRHfHw8QkNDAQDfffcdQkNDMXXqVBw9ehRxcXHw8vJCdnZ2qe7x5nAmieTVeMK8vFfrswcHB+P3339Hz5498dtvv8HZ2Rm//PJLodcpbGv7k1vXirx9IiIiIhLAnopqokGDBtDW1sbZs2dhY2MDAHj27Blu3LiBjh07wsXFBQqFAikpKWjfvn2h14iOjkafPn3w3//+F8CrBsGNGzfg7OysLKOjowOFQlGuOjo4OMDBwQETJ07E0KFDERYWhn79+hUoFxQUhEmTJqmc++ZYYrnuSURERNVTVZ0wrS7sqagmDA0NMXLkSEyZMgW//fYbrl69Cl9fX+Waxg4ODvD29oaPjw927tyJu3fvIiYmBiEhIdi7dy+AV/McDh06hFOnTiE+Ph6ffvppgS3jbW1tcfbsWSQmJuLJkyfKnojiZGVlwd/fHzKZDPfu3UN0dDRiY2Ph5ORUaHmpVApjY2OVg0OfiIiIiNSHPRXVyHfffYf09HT07t0bRkZGmDx5MtLS0pSvh4WF4auvvsLkyZPxxx9/oGbNmmjTpg169eoF4NVGKnfu3IGXlxf09fUxevRo9O3bV+UagYGBGDFiBJydnZGVlYW7d++WWC9NTU08ffoUPj4+ePToEWrWrIn+/ftjzpw5Ff8QiIiIiABoaLCnoiKxUVGNGBoaYuPGjdi4caPy3JQpU5R/1tbWxpw5c4r8MG9mZoZdu3YVew8HBwecPn1a5ZytrS3y8/NVzjVv3lzl3Jv7XRARERHRu4WNCiIiIiKqdiRcUrZC8WkSEREREZEQNiqIiIiIiEgIhz9RlaApONnq+pMMofzIexeF8hvquQjl+x0/IpS/81emUD5qZmeh/JZLyUL5rOzyLWNcUUS//2T30kouVAwbE12h/PITJS+oUBwvp1pC+b2/PxTKu3vZC+UtpUJxbLn6qORCxWhQo3QbiBali2V+yYWKy9c0FMr/lChWf1HaPcYI5fMlYr9ffS4R+/eXkla6vZ6K4nhjj1C+kYuXUH7KvWdCeXXS4JKyFYo9FVQhbG1tsXTpUnVXg4iIiIjUgD0VVCFiY2NhYGBQqrK2trYICAhAQEBA5VaKiIiIqAjc/K5isVFBFcLCwkLdVSAiIiIiNeHwp2pm//79+OCDD2Bqagpzc3P06tULt2/fBgBkZ2fD398fVlZW0NXVRb169RASEgIAyM/PR3BwMGxsbCCVSlGnTh2MHz9eed03hz8VV9bDwwP37t3DxIkTIZFIIJG8+i3BvXv30Lt3b9SoUQMGBgZo3LgxoqKi/sUnQ0RERETlxZ6KaiYjIwOTJk1C06ZNkZ6ejlmzZqFfv36Ii4vDsmXLsHv3bmzbtg02Nja4f/8+7t+/DwDYsWMHlixZgsjISDRu3BgPHz7EpUuXCr1HcWV37tyJZs2aYfTo0fDz81Nmxo4di+zsbBw/fhwGBga4du0aDA3FJg8SERERFYX7VFQsNiqqmQEDBqh8/cMPP8DCwgLXrl1DUlIS7O3t8cEHH0AikaBevXrKcklJSahduzY8PT2hra0NGxsbtGrVqtB7FFfWzMwMmpqaMDIyQu3atVUyAwYMQJMmTQAAdnZ2Ff3WiYiIiKiSsIlWzdy8eRNDhw6FnZ0djI2NYWtrC+DVh3pfX1/ExcXB0dER48ePx8GDB5W5QYMGISsrC3Z2dvDz88Mvv/yC3NzcQu9RlrKvjR8/Hl999RXatWuH2bNn4/Lly0WWlcvleP78ucqRmy22JB8RERFVLxqaErUdVREbFdVM79698ddff2HdunU4e/Yszp49C+DVfIoWLVrg7t27mDdvHrKysjB48GAMHDgQAGBtbY2EhASsXLkSenp6+Pzzz9GhQwfk5OQUuEdZyr42atQo3LlzB8OHD8eVK1fg5uaG5cuXF1o2JCQEJiYmKseJyDUV8HSIiIiIqDzYqKhGnj59ioSEBMyYMQNdunSBk5MTnj1T3bTG2NgYQ4YMwbp167B161bs2LEDf/31FwBAT08PvXv3xrJlyyCTyXD69GlcuXKl0HsVV1ZHRwcKRcHNyqytrTFmzBjs3LkTkydPxrp16wq9dlBQENLS0lSO9h99KvJoiIiIqJqRaEjUdlRFnFNRjdSoUQPm5uZYu3YtrKyskJSUhGnTpilfX7x4MaysrODi4gINDQ38/PPPqF27NkxNTREeHg6FQoHWrVtDX18fP/30E/T09FTmXbxWUllbW1scP34cH330EaRSKWrWrImAgAB0794dDg4OePbsGY4ePQonJ6dC34dUKoVUqroFrpaOTgU+KSIiIiIqC/ZUVCMaGhqIjIzE+fPn8f7772PixIn47rvvlK8bGRnh22+/hZubG1q2bInExERERUVBQ0MDpqamWLduHdq1a4emTZvi8OHD+N///gdzc/MC9ymp7Ny5c5GYmIgGDRoo97dQKBQYO3YsnJyc0K1bNzg4OGDlypX/zoMhIiIiIiHsqahmPD09ce3aNZVz+fn5yj+/uczrm/r27Yu+ffsWed3ExMRSl23Tpk2B5WiLmj9BREREVBk0uKRsheLTJCIiIiIiIeypICIiIqJqR1JFl3ZVF/ZUEBERERGREPZUUJWgyMsvuVAxan0yoORCxZg0ZL5Qvt/xI0L5Gx26COXnLe4nlM+2/0oo//mNH4TyBoP8hfI3c4yF8tefpAvl++RdFcrfkLYRyq/wrCWUXxX/Uig/y7OhUF7/WJhQPqnVcKH8GOtMofxjQ7Hnf/RRhlB+1tZ4ofzJzxyF8qJuZYmt/vc4Q2zzVDP9ovdgKo0HaWL/fmYn2gvlzZ78IZT/pJWNUJ6qjnemp8LDwwMBAQHqrka5lFR3X19flYnN/yxva2uLpUuXKr+WSCTYtWtXhdeTiIiIqLqQaGqo7aiK2FNRgWQyGTp16oRnz57B1NS01LnQ0FCVFZhKkpycjBo1apSjhkREREREFa9aNCry8/OhUCigpfV2vl0TE5Myla9du3Yl1aTiZGdnQ4cb0hEREdFbSqJRNXsM1OWdfJobN26Em5sbjIyMULt2bQwbNgwpKSnK12UyGSQSCfbt2wdXV1dIpVKcPHkSL168gLe3NwwMDGBlZYUlS5YUGGokl8sRGBiIunXrwsDAAK1bt4ZMJlO+fu/ePfTu3Rs1atSAgYEBGjdujKioKCQmJqJTp04AXu1cLZFI4OvrW2j99+7dCxMTE2zatAlAweFPJXlz+FNiYiIkEgl27tyJTp06QV9fH82aNcPp06dVMuvWrYO1tTX09fXRr18/LF68WKU35dKlS+jUqROMjIxgbGwMV1dXnDt3DsCrHbJNTU2xa9cu2NvbQ1dXF15eXrh//74yHxwcjObNm2P9+vWoX78+dHV1AQCpqakYNWoULCwsYGxsjM6dOxfYo+LXX39FixYtoKurCzs7O8yZMwe5ubmlfh5EREREpF7vZKMiJycH8+bNw6VLl7Br1y4kJiYW+gF+2rRpWLBgAeLj49G0aVNMmjQJ0dHR2L17Nw4dOoQTJ07gwoULKhl/f3+cPn0akZGRuHz5MgYNGoRu3brh5s2bAICxY8dCLpfj+PHjuHLlCr755hsYGhrC2toaO3bsAAAkJCQgOTkZoaGhBeq0efNmDB06FJs2bYK3t3eFPZPp06cjMDAQcXFxcHBwwNChQ5UfzKOjozFmzBhMmDABcXFx6Nq1K77++muVvLe3N9577z3Exsbi/PnzmDZtGrS1tZWvZ2Zm4uuvv8aPP/6I6OhopKam4qOPPlK5xq1bt7Bjxw7s3LkTcXFxAIBBgwYhJSUF+/btw/nz59GiRQt06dIFf/31FwDgxIkT8PHxwYQJE3Dt2jWsWbMG4eHhBepHREREVJE0NDXUdlRFb+d4oBJ88sknyj/b2dlh2bJlaNmyJdLT02FoaKh8be7cuejatSsA4MWLF4iIiMDmzZvRpcurlXLCwsJQp04dZfmkpCSEhYUhKSlJeT4wMBD79+9HWFgY5s+fj6SkJAwYMABNmjRR3v81MzMzAECtWrUKnVPx/fffY/r06fjf//6Hjh07VtDTgLKePXv2BADMmTMHjRs3xq1bt9CoUSMsX74c3bt3R2BgIADAwcEBp06dwp49e1Te+5QpU9CoUSMAgL296moSOTk5WLFiBVq3bg0AiIiIgJOTE2JiYtCqVSsAr4Y8/fjjj7CwsAAAnDx5EjExMUhJSYFUKgUALFy4ELt27cL27dsxevRozJkzB9OmTcOIESMAvHqe8+bNwxdffIHZs2dX6DMiIiIiosrxTjYqzp8/j+DgYFy6dAnPnj1DXl4egFcfjJ2dnZXl3NzclH++c+cOcnJylB+AgVdzGRwd/14K78qVK1AoFHBwcFC5n1wuh7m5OQBg/Pjx+Oyzz3Dw4EF4enpiwIABaNq0aYl13r59O1JSUhAdHY2WLVuW740X4806WFlZAQBSUlLQqFEjJCQkoF8/1SVDW7VqpdKomDRpEkaNGoWNGzfC09MTgwYNQoMGDZSva2lpqdS7UaNGMDU1RXx8vPKZ1qtXT9mgAF4NqUpPT1c+u9eysrJw+/ZtZZno6GiVngmFQoGXL18iMzMT+vr6Bd6rXC6HXC5XOZebnQ0tzuEgIiIiUot3rlGRkZEBLy8veHl5YdOmTbCwsEBSUhK8vLyQna261rSBgUGZrp2eng5NTU2cP38empqaKq+97gEZNWoUvLy8sHfvXhw8eBAhISFYtGgRxo0bV+y1XVxccOHCBfzwww9wc3ODRFKxuzi+OVTp9bVfN7ZKIzg4GMOGDcPevXuxb98+zJ49G5GRkQUaI8X55/NOT0+HlZWVypyU11735KSnp2POnDno379/gTKv52X8U0hICObMmaNyroP3WHgMF9urgIiIiKqPqrq0q7q8c42K69ev4+nTp1iwYAGsra0BQDmhuDh2dnbQ1tZGbGwsbGxebdSSlpaGGzduoEOHDgBeffBXKBRISUlB+/bti7yWtbU1xowZgzFjxiAoKAjr1q3DuHHjlKsdKRSKApkGDRpg0aJF8PDwgKamJlasWFHm915ejo6OiI2NVTn3z6+BV8OiHBwcMHHiRAwdOhRhYWHKRkVubi7OnTun7JVISEhAamoqnJycirxvixYt8PDhQ2hpacHW1rbIMgkJCWjYsPSbXwUFBWHSpEkq5745lljqPBERERFVrHeuUWFjYwMdHR0sX74cY8aMwdWrVzFv3rwSc0ZGRhgxYgSmTJkCMzMz1KpVC7Nnz4aGhobyN/sODg7w9vaGj48PFi1aBBcXFzx+/BhHjhxB06ZN0bNnTwQEBKB79+5wcHDAs2fPcPToUeUH63r16kEikWDPnj3o0aMH9PT0VOZ4ODg44OjRo/Dw8ICWlpbKhnaVady4cejQoQMWL16M3r1747fffsO+ffuU7zsrKwtTpkzBwIEDUb9+fTx48ACxsbEYMODvXaa1tbUxbtw4LFu2DFpaWvD390ebNm1UhpP9k6enJ9zd3dG3b198++23cHBwwJ9//om9e/eiX79+cHNzw6xZs9CrVy/Y2Nhg4MCB0NDQwKVLl3D16lV89VXhuzRLpVLlHI3XOPSJiIiIyoI9FRXrnXuaFhYWCA8Px88//wxnZ2csWLAACxcuLFV28eLFcHd3R69eveDp6Yl27drByclJZZhNWFgYfHx8MHnyZDg6OqJv374qvRsKhQJjx46Fk5MTunXrBgcHB6xcuRIAULduXeXEY0tLS/j7FxyO4+joiN9++w1btmzB5MmTK+CJlKxdu3ZYvXo1Fi9ejGbNmmH//v2YOHGi8n1ramri6dOn8PHxgYODAwYPHozu3burDDHS19fH1KlTMWzYMLRr1w6GhobYunVrsfeVSCSIiopChw4d8PHHH8PBwQEfffQR7t27B0tLSwCAl5cX9uzZg4MHD6Jly5Zo06YNlixZgnr16lXeAyEiIiKiCiXJL8tWzlVMRkYG6tati0WLFmHkyJHqrs6/ys/PD9evX8eJEydKLBseHo6AgACkpqZWfsXKafaB60L5TtM/FsrPHDJfKN+vjY1Q/kaHLkL5eYtLP3emMNm+hfcqlZZ+ZMm9jcUxGCQ2n+ZmjrFQ/vqTdKF8n7yrQvkblm2E8g11xOq/Kv6lUH5wY0uhvOnJcKF8UqvhQvkG2fdLLlSMx4a2QvnLjzKE8rO2Xiq5UDFOfuZYcqFiaFuI/fy79vC5UP5xRnbJhYphpq9dcqFiPEgT+/cTfuaeUN7MUFpyoWJ80krs76+lTQ2hvIjbEz4quVAlaRAaqbZ7V5Z3bviTiIsXL+L69eto1aoV0tLSMHfuXABAnz591Fyzyrdw4UJ07doVBgYG2LdvHyIiIpQ9LERERETVDXfUrljVqlEBvPpwnZCQAB0dHbi6uuLEiROoWbOmuqtV6WJiYvDtt9/ixYsXyr09Ro0ape5qEREREVEVUK0aFS4uLjh//ry6q6EW27ZtK3fW19e30B3LiYiIiN5Vkn9sH0BiqlWjgqouTQ2xfT/qtqwrlJ/T732h/J2/MoXyonMiZk76RSjv3WeGUF7vfwWXOC6LBhBbotlh4OdCeS1LU6G8JEXsP7bUlzli95fISy5UDEWe2NQ8PS2xf78SLbEx7eny0u/pU+j9c8Wen6bgtkV5glMjDU0L3xOotBQG5iUXKobY3x5gaSD2UUZX8PtPT0tsCE1GttgTsDAS+/vT1xH7+ZMmzxXKU9XBwWRv8PDwQEBAgLqr8VYJDg5G8+bNiy2TmJgIiUSCuLg4AIBMJoNEIilyYndJ5cPDw5Wb4xERERFVBommhtqOqqhqvqsqrKQP7JXN19cXffv2VTlnbW2N5ORkvP9+6X5bX9byRERERPR24/CnCpKfnw+FQgEtrer3SDU1NVG7du1KK09EREREbzf2VBRh48aNcHNzg5GREWrXro1hw4YhJSVF+frrHoN9+/bB1dUVUqkUJ0+exIsXL+Dt7Q0DAwNYWVlhyZIlBYZVyeVyBAYGom7dujAwMEDr1q0hk8mUr9+7dw+9e/dGjRo1YGBggMaNGyMqKgqJiYno1KkTAKBGjRqQSCTKCdQeHh4YN24cAgICUKNGDVhaWmLdunXIyMjAxx9/DCMjIzRs2BD79u1T3qewYUa7du1S7rT9T8HBwYiIiMCvv/4KiUQCiUQCmUxWYDjTP2VmZqJ79+5o164dUlNTSyxPREREVNk0NDTUdlRFVfNdVYCcnBzMmzcPly5dwq5du5CYmFjoCkjTpk3DggULEB8fj6ZNm2LSpEmIjo7G7t27cejQIZw4cQIXLlxQyfj7++P06dOIjIzE5cuXMWjQIHTr1g03b94EAIwdOxZyuRzHjx/HlStX8M0338DQ0BDW1tbYsWMHACAhIQHJyckIDQ1VXjciIgI1a9ZETEwMxo0bh88++wyDBg1C27ZtceHCBXz44YcYPnw4MjPLNyk4MDAQgwcPRrdu3ZCcnIzk5GS0bdu22Exqaiq6du2KvLw8HDp0iHMliIiIiKqg6jdWp5Q++eQT5Z9f7+vQsmVLpKenw9DQUPna3Llz0bVrVwDAixcvEBERgc2bN6NLl1c7HIeFhaFOnTrK8klJSQgLC0NSUpLyfGBgIPbv34+wsDDMnz8fSUlJGDBgAJo0aaK8/2tmZmYAgFq1ahX4gN6sWTPMmPFqFZ6goCAsWLAANWvWhJ+fHwBg1qxZWLVqFS5fvow2bcq+A6+hoSH09PQgl8tLNXzp4cOHGDJkCOzt7bF582bo6OiU+Z5ERERElaGqTphWFzYqinD+/HkEBwfj0qVLePbsGfLyXi05mJSUBGdnZ2U5Nzc35Z/v3LmDnJwctGrVSnnOxMQEjo6Oyq+vXLkChUIBBwcHlfvJ5XKYm79alm/8+PH47LPPcPDgQXh6emLAgAFo2rRpiXV+s4ympibMzc2VDRMAsLS0BACVYVyVqWvXrmjVqhW2bt0KzQpcC1oul0MuV13CMTc7G1pstBARERGpBZtohcjIyICXlxeMjY2xadMmxMbG4pdfXq3jn52drVLWwMCgTNdOT0+HpqYmzp8/j7i4OOURHx+vHMo0atQo3LlzB8OHD8eVK1fg5uaG5cuXl3htbW3Vta4lEonKuddzJV43kDQ0NJD/j/XNc3LE1rt/U8+ePXH8+HFcu3atwq4JACEhITAxMVE5TkSuqdB7EBEREVHpsVFRiOvXr+Pp06dYsGAB2rdvj0aNGpXqt/t2dnbQ1tZGbOzfG3mlpaXhxo0byq9dXFygUCiQkpKChg0bqhxvDimytrbGmDFjsHPnTkyePBnr1q0DAOUQIoVCIfw+LSws8OLFC2RkZCjPlTR5WkdHp9T3XrBgAUaMGIEuXbpUaMMiKCgIaWlpKkf7jz6tsOsTERFR1cd9KipW1XxXgmxsbKCjo4Ply5fjzp072L17N+bNm1dizsjICCNGjMCUKVNw9OhR/P777xg5ciQ0NDSUvQQODg7w9vaGj48Pdu7cibt37yImJgYhISHYu3cvACAgIAAHDhzA3bt3ceHCBRw9ehROTk4AgHr16kEikWDPnj14/Pgx0tPTy/0+W7duDX19fXz55Ze4ffs2Nm/ejPDw8GIztra2uHz5MhISEvDkyZMSezYWLlwIb29vdO7cGdevXy93Xd8klUphbGyscnDoExEREZH6sFFRCAsLC4SHh+Pnn3+Gs7MzFixYgIULF5Yqu3jxYri7u6NXr17w9PREu3bt4OTkBF1dXWWZsLAw+Pj4YPLkyXB0dETfvn0RGxsLGxsbAK96IcaOHQsnJyd069YNDg4OWLlyJQCgbt26mDNnDqZNmwZLS0v4+/uX+32amZnhp59+QlRUFJo0aYItW7YgODi42Iyfnx8cHR3h5uYGCwsLREdHl3ifJUuWYPDgwejcubNKrw0RERGRukg0NNR2VEWS/H8OqqcKlZGRgbp162LRokUYOXKkuqtTZc09lCCUH7pzulD+/uRVQvk7f5Vvmd/X+kQvFcrPnPSLUN779nmhvJ7/YKF8g94thfKGAz8Xyt/JNxXKN0yJLblQMc4aNhfKt9R7LpRffiNPKP+Ji5VQXvfkT0L53xuLff81z70jlH9q5lhyoWKcTy5/jzUALDwo9suevaNaCOV19cs2N/Gfnr4Q+/mZJhcbTqynJfYB8V6avORCxfjp3AOhvL6O2EIqHzaqJZT3tLcQyov4Y476hk7XnV315oJy9acKdvHiRVy/fh2tWrVCWloa5s6dCwDo06ePmmtGRERERFQ52KioBAsXLkRCQgJ0dHTg6uqKEydOoGbNmuquFhERERH9v6o6YVpd2KioYC4uLjh/XmwoCBERERHRu4RzKqhKEJ1T0amBWE+SX+hJoXzUzM5Ceangb1vuPHsplN/UwFUo7xFX8oT/4jzLEttfJU0wr8gT+zE63KWOUP6u4N+fqMTULLXev/V7JkL5B8/FxrS/kOcK5XMEv3+aWhoK5eMfZ5RcqBhGUrHfT4qOqY/7I1Uon5kjNqdCITalCCkZYt9/LayMhPKic0p2X3sklJ/VVWxOkYjkkLFqu7dV0Pdqu3dlKdMnEQ8PDwQEBFRSVdQrMTEREomkxH0aqrLg4GA0b95c+bWvry/69u1b7jwRERERVQ9VejBZUQ2Fwj4sW1tbIzk5Ge+///6/V0E1kkgk2LVrV7FlQkNDS9y34k2BgYE4cuSIWMWIiIiI/gUamhpqO6oizqn4f5qamio7WhNgYlK2IQWGhoYwNBTrhiciIiKid0+5m0rPnj2Dj48PatSoAX19fXTv3h03b95Uvh4eHg5TU1McOHAATk5OMDQ0RLdu3ZCcnKwsk5ubi/Hjx8PU1BTm5uaYOnUqRowYodKLkJeXh5CQENSvXx96enpo1qwZtm/frlIPb29vWFhYQE9PD/b29ggLCwMA1K9fH8CrydMSiQQeHh4IDg5GREQEfv31V0gkEkgkEshksgK9GjKZDBKJBAcOHICLiwv09PTQuXNnpKSkYN++fXBycoKxsTGGDRuGzMzMCqnv6zpERkaibdu20NXVxfvvv49jx46pPPurV6+ie/fuMDQ0hKWlJYYPH44nT54oX/fw8MD48ePxxRdfwMzMDLVr11bZ1M7W1hYA0K9fP0gkEuXX//Rmj87atWtRp04d5OWpDh7t06cPPvnkEwBFD59auHAhrKysYG5ujrFjx6rswp2cnIyePXtCT08P9evXx+bNm2Fra4ulS5cWWiciIiIievuUu1Hh6+uLc+fOYffu3Th9+jTy8/PRo0cPlQ+MmZmZWLhwITZu3Ijjx48jKSkJgYGByte/+eYbbNq0CWFhYYiOjsbz588LDMkJCQnBjz/+iNWrV+P333/HxIkT8d///lf5QXvmzJm4du0a9u3bh/j4eKxatUq5fGtMTAwA4PDhw0hOTsbOnTsRGBiIwYMHKxs4ycnJaNu2bZHvMzg4GCtWrMCpU6dw//59DB48GEuXLsXmzZuxd+9eHDx4EMuXL6+Q+r42ZcoUTJ48GRcvXoS7uzt69+6Np0+fAgBSU1PRuXNnuLi44Ny5c9i/fz8ePXqEwYNVN2+KiIiAgYEBzp49i2+//RZz587FoUOHAACxsa822goLC0NycrLy6+IMGjQIT58+xdGjR5Xn/vrrL+zfvx/e3t5F5o4ePYrbt2/j6NGjiIiIQHh4uMqQKh8fH/z555+QyWTYsWMH1q5di5SUlBLrQ0RERCSCO2pXrHINf7p58yZ2796N6Oho5QfyTZs2wdraGrt27cKgQYMAADk5OVi9ejUaNGgAAPD391duBgcAy5cvR1BQEPr16wcAWLFiBaKiopSvy+VyzJ8/H4cPH4a7uzsAwM7ODidPnsSaNWvQsWNHJCUlwcXFBW5ubgCg8lt3C4tXK0qYm5urDG3S09ODXC4v1XCnr776Cu3atQMAjBw5EkFBQbh9+zbs7OwAAAMHDsTRo0cxdepU4fq+5u/vjwEDBgAAVq1ahf3792PDhg344osvsGLFCri4uGD+/PnK8j/88AOsra1x48YNODg4AACaNm2K2bNnAwDs7e2xYsUKHDlyBF27dlU+F1NT01IP+apRowa6d++OzZs3o0uXLgCA7du3o2bNmujUqVOxuRUrVkBTUxONGjVCz549ceTIEfj5+eH69es4fPgwYmNjlc9j/fr1sLe3L1WdiIiIiOjtUK5GRXx8PLS0tNC6dWvlOXNzczg6OiI+Pl55Tl9fX9mgAAArKyvlb6HT0tLw6NEjtGrVSvm6pqYmXF1dlUNsbt26hczMTHTt2lXl/tnZ2XBxcQEAfPbZZxgwYAAuXLiADz/8EH379i2256GsmjZtqvyzpaUl9PX1lQ2K1+de94hUVH1fN0gAQEtLC25ubsrneunSJRw9erTQuQu3b99WaVS86c1nX17e3t7w8/PDypUrIZVKsWnTJnz00UfQKKbF3bhxY2hqaqrU48qVKwCAhIQEaGlpoUWLFsrXGzZsiBo1ahRbD7lcDrlcdQm+3OxsaOnolOdtERERUTXEze8qVqVO1NbW1lb5WiKRoCzbYqSnpwMA9u7di7p166q8JpVKAQDdu3fHvXv3EBUVhUOHDqFLly4YO3YsFi5cKFj7V958DxKJpND39LoR9G/UNz09Hb1798Y333xT4DUrK6tC6/3PepZX7969kZ+fj71796Jly5Y4ceIElixZUmymMuoREhKCOXPmqJzz+O9YdPIZJ3RdIiIiIiqfcjXRnJyckJubi7NnzyrPPX36FAkJCXB2di7VNUxMTGBpaakynl+hUODChQvKr52dnSGVSpGUlISGDRuqHNbW1spyFhYWGDFiBH766ScsXboUa9euBQDo/P9vrhUK1Y1ddHR0CpyrCKL1fe3MmTPKP+fm5uL8+fNwcnICALRo0QK///47bG1tC9zDwMCg1HXV1tYu8zPQ1dVF//79sWnTJmzZsgWOjo4qvQxl5ejoiNzcXFy8eFF57tatW3j27FmxuaCgIKSlpakc7T/6tNz1ICIiIiIx5eqpsLe3R58+feDn54c1a9bAyMgI06ZNQ926ddGnT59SX2fcuHEICQlBw4YN0ahRIyxfvhzPnj2DRCIBABgZGSEwMBATJ05EXl4ePvjgA6SlpSE6OhrGxsYYMWIEZs2aBVdXVzRu3BhyuRx79uxRfgCvVasW9PT0sH//frz33nvQ1dWFiYkJbG1tceDAASQkJMDc3LzMS6cWRbS+r33//fewt7eHk5MTlixZgmfPnilXWBo7dizWrVuHoUOHKld3unXrFiIjI7F+/XqVoUbFsbW1xZEjR9CuXTtIpdIShxy95u3tjV69euH333/Hf//737I9oH9o1KgRPD09MXr0aKxatQra2tqYPHky9PT0lN8DhZFKpcqen9c49ImIiIjKgsOfKla5n2ZYWBhcXV3Rq1cvuLu7Iz8/H1FRUQWGuxRn6tSpGDp0KHx8fODu7g5DQ0N4eXlBV1dXWWbevHmYOXMmQkJC4OTkhG7dumHv3r3K5WJ1dHQQFBSEpk2bokOHDtDU1ERkZCSAV/MRli1bhjVr1qBOnTrKBo+fnx8cHR3h5uYGCwsLREdHl/cxFCBS39cWLFiABQsWoFmzZjh58iR2796tXCGqTp06iI6OhkKhwIcffogmTZogICAApqamxc5t+KdFixbh0KFDsLa2Vs73KI3OnTvDzMwMCQkJGDZsWKlzRfnxxx9haWmJDh06oF+/fvDz84ORkZHK9wARERERvd0k+WWZ5FDJ8vLy4OTkhMGDB2PevHnqrs6/LjExEfXr18fFixdV9nuoTh48eABra2scPnxYucpUacw9lCB0304NapZcqBh+oSeF8lEzOwvlpYK/bbnz7KVQflMDV6G8R5xYw/5ZVk7JhYqRJphX5In9GB3uUkcof1fw709UYmqWWu/f+j2x3uYHz+UlFyrGC3muUD5H8PunqaXYpqPxjzOE8kZSsemZnvYWQvm4P1KF8pk5YsOhFWLTBJGSIfb918LKSCifJhd7/7uvPRLKz+rqKJQX8XTFFLXd29z/O7Xdu7KodUfte/fu4eDBg+jYsSPkcjlWrFiBu3fvVshvwOnd8NtvvyE9PR1NmjRBcnIyvvjiC9ja2qJDhw7qrhoRERERlZJaGxUaGhoIDw9HYGAg8vPz8f777+Pw4cMF5hhQ1ZWTk4Mvv/wSd+7cgZGREdq2bYtNmzaVaRgdERERUVlplHIeKpWOWhsV1tbWFTqf4V1na2tbpiV3qwIvLy94eXmpuxpEREREJECtjQqiiiI6pr3mvI+F8tPHrRTKb7mULJT//MYPQnm9/8WWXKgYonMiZM3bCeWXn1kqlP+zqadQ/kqK2Jj0Oln3hfLns0yF8j3rFr3aWmnEPBAbE+7nKjanRC9mu1D+gXV3oXwf3XtC+ScWTYTysntpQvmt58S+/34a1kwoL0pXS2xOmeicCG0dsX8/onM6Zu0Xm1NoZiAtuVAxujaqJZSnqoNrab2FPDw8EBAQUGHX8/X1Rd++fSv0nuHh4TA1NS3ydZlMBolEgtTU1ELLBwcHV9vJ6ERERKR+Ek0NtR1VUdV8V6R2bdu2RXJycoXtAUJERERUnX3//fewtbWFrq4uWrdujZiYmGLLp6amYuzYsbCysoJUKoWDgwOioqIqrX4c/kSVQkdHB7Vr11Z3NYiIiIgK9S71GGzduhWTJk3C6tWr0bp1ayxduhReXl5ISEhArVoFh6BlZ2eja9euqFWrFrZv3466devi3r17xY4yEfXuPM0qKiMjAz4+PjA0NISVlRUWLVqk8vqzZ8/g4+ODGjVqQF9fH927d8fNmzeVrxc2jGjp0qWwtbUtcK85c+bAwsICxsbGGDNmDLKzs4usl1wuR2BgIOrWrQsDAwO0bt0aMpmsyPKPHz+Gm5sb+vXrB7lcXmD4U0lkMhlatWoFAwMDmJqaol27drh3T2ycMhEREVFVsHjxYvj5+eHjjz+Gs7MzVq9eDX19ffzwQ+FzKn/44Qf89ddf2LVrF9q1awdbW1t07NgRzZpV3hwoNirUbMqUKTh27Bh+/fVXHDx4EDKZDBcuXFC+7uvri3PnzmH37t04ffo08vPz0aNHD+TklG2zriNHjiA+Ph4ymQxbtmzBzp07MWfOnCLL+/v74/Tp04iMjMTly5cxaNAgdOvWTaVB89r9+/fRvn17vP/++9i+fTuk0rJN+srNzUXfvn3RsWNHXL58GadPn8bo0aMhkYhNfiMiIiJ6G8nlcjx//lzlkMsLX/QiOzsb58+fh6fn34uKaGhowNPTE6dPny40s3v3bri7u2Ps2LGwtLTE+++/j/nz50OhEFsYoDhsVKhReno6NmzYgIULF6JLly5o0qQJIiIikJv7anfWmzdvYvfu3Vi/fj3at2+PZs2aYdOmTfjjjz+wa9euMt1LR0cHP/zwAxo3boyePXti7ty5WLZsGfLyCi57kZSUhLCwMPz8889o3749GjRogMDAQHzwwQcICwtTKZuQkIB27drBy8sLYWFh0CzHms/Pnz9HWloaevXqhQYNGsDJyQkjRoyAjY1Nma9FREREVBoSDQ21HSEhITAxMVE5QkJCCq3nkydPoFAoYGlpqXLe0tISDx8+LDRz584dbN++HQqFAlFRUZg5cyYWLVqEr776qsKf42ucU6FGt2/fRnZ2Nlq3bq08Z2ZmBkfHV1vWx8fHQ0tLS+V1c3NzODo6Ij4+vkz3atasGfT19ZVfu7u7Iz09Hffv30e9evVUyl65cgUKhQIODg4q5+VyOczNzZVfZ2VloX379hg2bBiWLl1apvq8yczMDL6+vvDy8kLXrl3h6emJwYMHw8rKqtDycrm8QGs+NzsbWjo65a4DERER0b8lKCgIkyZNUjlX1pEexcnLy0OtWrWwdu1aaGpqwtXVFX/88Qe+++47zJ49u8Lu8yb2VLzjNDQ0CmyYV9ahUf+Unp4OTU1NnD9/HnFxccojPj4eoaGhynJSqRSenp7Ys2cP/vjjD6F7hoWF4fTp02jbti22bt0KBwcHnDlzptCyhbXuT25dK3R/IiIiql7UuaSsVCqFsbGxylFUo6JmzZrQ1NTEo0ePVM4/evSoyEVxrKys4ODgoDKCxMnJCQ8fPix2Tq0INirUqEGDBtDW1sbZs2eV5549e4YbN24AePWXn5ubq/L606dPkZCQAGdnZwCAhYUFHj58qNKwiIuLK3CvS5cuISsrS/n1mTNnYGhoCGtr6wJlXVxcoFAokJKSgoYNG6ocb37zamhoYOPGjXB1dUWnTp3w559/lv9h/P99g4KCcOrUKbz//vvYvHlzoeWCgoKQlpamcnwwZLTQvYmIiIjeRjo6OnB1dcWRI0eU5/Ly8nDkyBG4u7sXmmnXrh1u3bqlMsz9xo0bsLKygk4ljexgo0KNDA0NMXLkSEyZMgW//fYbrl69Cl9fX2hovPprsbe3R58+feDn54eTJ0/i0qVL+O9//4u6deuiT58+AF5tWvf48WN8++23uH37Nr7//nvs27evwL2ys7MxcuRIXLt2DVFRUZg9ezb8/f2V93qTg4MDvL294ePjg507d+Lu3buIiYlBSEgI9u7dq1JWU1MTmzZtQrNmzdC5c+cix/YV5+7duwgKCsLp06dx7949HDx4EDdv3oSTk1Oh5Qtr3XPoExEREZXFu7T53aRJk7Bu3TpEREQgPj4en332GTIyMvDxxx8DAHx8fBAUFKQs/9lnn+Gvv/7ChAkTcOPGDezduxfz58/H2LFjK+z5/RPnVKjZd999h/T0dPTu3RtGRkaYPHky0tLSlK+HhYVhwoQJ6NWrF7Kzs9GhQwdERUVBW1sbwKvejJUrV2L+/PmYN28eBgwYgMDAQKxdqzocqEuXLrC3t0eHDh0gl8sxdOhQBAcHF1mvsLAwfPXVV5g8eTL++OMP1KxZE23atEGvXr0KlNXS0sKWLVswZMgQdO7cudilZwujr6+P69evIyIiAk+fPoWVlRXGjh2LTz/9tEzXISIiIqqKhgwZgsePH2PWrFl4+PAhmjdvjv379ysnbyclJan8otja2hoHDhzAxIkT0bRpU9StWxcTJkzA1KlTK62Okvx/DsgnegfNPnBdKP9R5BdC+XPjVgrlk55lCuU/v1H4OtWldft/sUL5WyE/CuVlzdsJ5ZefWSqU/7OhZ8mFinElJUMo3834L6H8/56ZCuV71hVbvjn0crpQ3s+1jlBeL2a7UP6EdXehfGfJbaH8E4smQnnZvbSSCxVj67n7Qvmfhomte6+nqyuUv/7ouVA+I7vgKohloa0p9u8n+UXhy4iW1k+xSUJ5MwOxycFdGxXceK0sejlZllyokqRvmqu2ext6z1LbvSsLeyqIiIiIqNqRFDIEnMqPT5OIiIiIiISwp4KIiIiIqh2JRtk37KWisVFBVYKmhtiYVofgeUL5PYkvhfJZ2QqhvMEgf6F8A6wQysdmie2NIjonYlybAKH893d3CeWzzOyE8vc13xPKJ6U9FstbWgjlFXkvhPL3X4h9/9i2GSSUv30lRSjv4txUKH8/VWzN+GeC//7eq6FfcqFi3BWsv3NtsTkVv6eIzemR54rNqdAQ/P8nM0fs57+Jntjqh/o6Yh+sH74Q+/+Pqg4Of6qCgoOD0bx58zJlPDw8EBAQUOry4eHhMDU1LfJ1mUwGiUSC1NTUQsuXp45ERERE9HZio+IdUtoP/oGBgSobpKhD27ZtkZycDBMTE7XWg4iIiKhQGprqO6ogDn+qQvLz86FQKGBoaAhDQ0O11kVHR6fIreOJiIiIqGphT8U7wtfXF8eOHUNoaCgkEgkkEgnCw8MhkUiwb98+uLq6QiqV4uTJkwWGFvn6+qJv376YM2cOLCwsYGxsjDFjxiA7u+hxsHK5HIGBgahbty4MDAzQunXrYje1e/z4Mdzc3NCvXz/I5fICw59KIpPJ0KpVKxgYGMDU1BTt2rXDvXv3Svl0iIiIiMpIQ0N9RxXEnop3RGhoKG7cuIH3338fc+e+2qzl999/BwBMmzYNCxcuhJ2dHWrUqFHoh/8jR45AV1cXMpkMiYmJ+Pjjj2Fubo6vv/660Pv5+/vj2rVriIyMRJ06dfDLL7+gW7duuHLlCuzt7VXK3r9/H127dkWbNm2wYcMGaGqWrVsvNzcXffv2hZ+fH7Zs2YLs7GzExMRAIhGb/EZERERE/w42Kt4RJiYm0NHRgb6+vnJY0fXrr3aRnjt3Lrp27VpsXkdHBz/88AP09fXRuHFjzJ07F1OmTMG8efNUtnUHXm31HhYWhqSkJNSp82qn28DAQOzfvx9hYWGYP3++smxCQgK6du2Kfv36YenSpeVqCDx//hxpaWno1asXGjRoAABwcnIq83WIiIiISktSxl+CUvHYqKgC3NzcSizTrFkz6Ov/vWygu7s70tPTcf/+fdSrV0+l7JUrV6BQKODg4KByXi6Xw9zcXPl1VlYW2rdvj2HDhmHp0qXlrr+ZmRl8fX3h5eWFrl27wtPTE4MHD4aVlVWh5eVyOeRyucq53OxsaOmILatHREREROVTNQd1VTMGBgYVer309HRoamri/PnziIuLUx7x8fEIDQ1VlpNKpfD09MSePXvwxx9/CN0zLCwMp0+fRtu2bbF161Y4ODjgzJkzhZYNCQmBiYmJynEico3Q/YmIiIio/NioeIfo6OhAoSjfJjmXLl1CVlaW8uszZ87A0NAQ1tbWBcq6uLhAoVAgJSUFDRs2VDneXNFJQ0MDGzduhKurKzp16oQ///yzXHV7875BQUE4deoU3n//fWzevLnQckFBQUhLS1M52n/0qdC9iYiIqJrhkrIVio2Kd4itrS3Onj2LxMREPHnyBHl5pd8FNDs7GyNHjsS1a9cQFRWF2bNnw9/fv8B8CgBwcHCAt7c3fHx8sHPnTty9excxMTEICQnB3r17Vcpqampi06ZNaNasGTp37oyHDx+W+X3dvXsXQUFBOH36NO7du4eDBw/i5s2bRc6rkEqlMDY2Vjk49ImIiIhIfdioeIcEBgZCU1MTzs7OsLCwQFJSUqmzXbp0gb29PTp06IAhQ4bgP//5D4KDg4ssHxYWBh8fH0yePBmOjo7o27cvYmNjYWNjU6CslpYWtmzZgsaNG6Nz585ISUkp0/vS19fH9evXMWDAADg4OGD06NEYO3YsPv2UvQ9ERERUSdhTUaEk+fn5+equBFUuX19fpKamYteuXequSqWZeyhBKD/d4aVQfnGi2LyWtMwcofyslkZC+YyfVwjlI13GCOVHSeKE8uPaBAjlv7+7Syh/U89OKC/VFFs+eXfCY6F8TwcLofz2q2XvoVS5f6NaQnlbE7Geys1XyvaLkH8a6Cz2/BJTi94zqDTO/ZkmlL/253Oh/Kfu9UouVAzn2sZC+R1XxIbeynNL3+tfGA0NsX+/mTnlG9b82oV7qUJ5I12xNXsaWIj9/zeqldj3j4isPd+r7d56vcaq7d6VhT0VREREREQkhEvKEhEREVG1I6miO1urCxsV1UB4eLi6q0BEREREVRgbFUQA7giOic/KFhvTK+pmjtiYZIeBnwvl067KSy5UjD+begrlRedEjK3fV+z+d3YK5fdm1RHKi87JufY4QyivyBObmnfjidj9U7NyhfLPMsXmNFx7nFVyoWKkZIj9+3n+UuzvX3RMfYLg35/onIrkdLHnJ/r9qyk4p0L0/qJ/f6L1f5Yl9v2nVlV0wrS6sN+nmgkODkbz5s2FryOTySCRSJCamlro64mJiZBIJIiLiyu0fHh4OExNTYXrQURERETqx54KqhTW1tZITk5GzZo11V0VIiIiooLYU1Gh2FNBKrKzxYYBvKapqYnatWtDS4vtViIiIqKqjo0KNcnIyICPjw8MDQ1hZWWFRYsWwcPDAwEBAQAAiURSYF8JU1NTlUnXU6dOhYODA/T19WFnZ4eZM2ciJ0d1bOOCBQtgaWkJIyMjjBw5Ei9fqu7H4Ovri759++Lrr79GnTp14OjoCADYuHEj3NzcYGRkhNq1a2PYsGHFbmqXmZmJ7t27o127dkhNTS0w/Kkkly5dQqdOnWBkZARjY2O4urri3LlzpcoSERERkXqxUaEmU6ZMwbFjx/Drr7/i4MGDkMlkuHDhQpmuYWRkhPDwcFy7dg2hoaFYt24dlixZonx927ZtCA4Oxvz583Hu3DlYWVlh5cqVBa5z5MgRJCQk4NChQ9izZw8AICcnB/PmzcOlS5ewa9cuJCYmwtfXt9B6pKamomvXrsjLy8OhQ4fKNVfC29sb7733HmJjY3H+/HlMmzYN2traZb4OERERUWlINDTUdlRFHJuiBunp6diwYQN++ukndOnSBQAQERGB9957r0zXmTFjhvLPtra2CAwMRGRkJL744gsAwNKlSzFy5EiMHDkSAPDVV1/h8OHDBXorDAwMsH79eujo/L0r7SeffKL8s52dHZYtW4aWLVsiPT0dhoaGytcePnyIIUOGwN7eHps3b1a5RlkkJSVhypQpaNSoEQDA3t6+XNchIiIion9f1WwqveVu376N7OxstG7dWnnOzMxMOfSotLZu3Yp27dqhdu3aMDQ0xIwZM5CUlKR8PT4+XuUeAODu7l7gOk2aNCnQGDh//jx69+4NGxsbGBkZoWPHjgCgcn0A6Nq1Kxo2bIitW7eWu0EBAJMmTcKoUaPg6emJBQsW4Pbt20WWlcvleP78ucqRW0FzQYiIiKia0NBU31EFsVHxlpJIJMjPV127+s35EqdPn4a3tzd69OiBPXv24OLFi5g+fXq5JlobGBiofJ2RkQEvLy8YGxtj06ZNiI2NxS+//AKg4ETunj174vjx47h27VqZ7/um4OBg/P777+jZsyd+++03ODs7K+/5TyEhITAxMVE5TkSuEbo/EREREZUfGxVq0KBBA2hra+Ps2bPKc8+ePcONGzeUX1tYWCA5OVn59c2bN5GZman8+tSpU6hXrx6mT58ONzc32Nvb4969eyr3cXJyUrkHAJw5c6bE+l2/fh1Pnz7FggUL0L59ezRq1KjISdoLFizAiBEj0KVLF+GGhYODAyZOnIiDBw+if//+CAsLK7RcUFAQ0tLSVI72H30qdG8iIiIiKj/OqVADQ0NDjBw5ElOmTIG5uTlq1aqF6dOnQ+ONiTudO3fGihUr4O7uDoVCgalTp6pMXLa3t0dSUhIiIyPRsmVL7N27t8Bv9idMmABfX1+4ubmhXbt22LRpE37//XfY2RW/e7SNjQ10dHSwfPlyjBkzBlevXsW8efOKLL9w4UIoFAp07twZMplMOS+itLKysjBlyhQMHDgQ9evXx4MHDxAbG4sBAwYUWl4qlUIqlaqc0xIYekVERETVUBUdhqQu7KlQk++++w7t27dH79694enpiQ8++ACurq7K1xctWgRra2u0b98ew4YNQ2BgIPT19ZWv/+c//8HEiRPh7++P5s2b49SpU5g5c6bKPYYMGYKZM2fiiy++gKurK+7du4fPPvusxLpZWFggPDwcP//8M5ydnbFgwQIsXLiw2MySJUswePBgdO7cWaXHpTQ0NTXx9OlT+Pj4wMHBAYMHD0b37t0xZ86cMl2HiIiIiNRDkv/PgfukNh4eHmjevDmWLl2q7qq8c+YeShDKD21WRyi/5dKfQvns3Dyh/NDmdYXyDlqpQvlFV+VC+aFNrYTy7724JZQfW7+vUP77OzuF8nuzxL7/4v5IE8o3r2silL+S/Fwo36iWYcmFilHLQFpyoWJE3/tLKN+unplQPiVD7N/Pnb8ySy5UjLTMnJILFcPV2lQo3+99sX//K07fFcor8sQ+BmlqSNR6/4epL0suVAzR+pvoiy3/PqVjQ6G8iOwTkWq7t077j9R278rCngoiIiIiIhLCORVEREREVP1U0U3o1IWNireITCZTdxWIiIiIiMqMjQqqEkTHpMY/yVDr/UXHtF5/ki6U17I0Fcor8h4K5a+kiD3/LLPiVzQrieiciLF2/YXybmePCeVFpaSLjekX/f5/IjimPzNHbE6S6JymxNQsoXx6dq5QXrT+oj9/nmaqd/PR9Jdiz0/d1P3/h2he9PuPqg72+1C5BAcHo3nz5kW+Hh4eDlNT0yLL+/r6om/fvpVWPyIiIqJicUftCsVGRTVXWR/uhwwZUualZYmIiIjo3cThT1Qp9PT0oKenp+5qEBERERVKUkV7DNSFPRVvMQ8PD/j7+8Pf3x8mJiaoWbMmZs6ciddbi8jlcgQGBqJu3bowMDBA69atVSZ7vx6CdODAATg5OcHQ0BDdunVDcnIygFdDkiIiIvDrr79CIpFAIpEo81OnToWDgwP09fVhZ2eHmTNnIien6HHPt2/fhp2dHfz9/ZGfn19g+FNJtm/fjiZNmkBPTw/m5ubw9PRERobYOHsiIiIi+newUfGWi4iIgJaWFmJiYhAaGorFixdj/fr1AAB/f3+cPn0akZGRuHz5MgYNGoRu3brh5s2bynxmZiYWLlyIjRs34vjx40hKSkJgYCAAIDAwEIMHD1Y2NJKTk9G2bVsAgJGREcLDw3Ht2jWEhoZi3bp1WLJkSaF1vHz5Mj744AMMGzYMK1asgERStklfycnJGDp0KD755BPEx8dDJpOhf//+4L6MRERERO8GDn96y1lbW2PJkiWQSCRwdHTElStXsGTJEnh5eSEsLAxJSUmoU+fVbryBgYHYv38/wsLCMH/+fABATk4OVq9ejQYNGgB41RCZO3cuAMDQ0BB6enqQy+WoXbu2yn1nzJih/LOtrS0CAwMRGRmJL774QqXcqVOn0KtXL0yfPh2TJ08u13tMTk5Gbm4u+vfvj3r16gEAmjRpUq5rEREREZUK96moUGxUvOXatGmj8pt/d3d3LFq0CFeuXIFCoYCDg4NKeblcDnNzc+XX+vr6ygYFAFhZWSElJaXE+27duhXLli3D7du3kZ6ejtzcXBgbG6uUSUpKQteuXfH1118jICCgnO8QaNasGbp06YImTZrAy8sLH374IQYOHIgaNWoUWl4ul0MuV10CMzc7G1o6OuWuAxERERGVH5to76j09HRoamri/PnziIuLUx7x8fEIDQ1VltPW1lbJSSSSEocVnT59Gt7e3ujRowf27NmDixcvYvr06cjOVl2L3MLCAq1atcKWLVvw/Pnzcr8XTU1NHDp0CPv27YOzszOWL18OR0dH3L17t9DyISEhMDExUTlObl1b7vsTERFR9SPR0FTbURWxUfGWO3v2rMrXZ86cgb29PVxcXKBQKJCSkoKGDRuqHP8cylQcHR0dKBQKlXOnTp1CvXr1MH36dLi5ucHe3h737t0rkNXT08OePXugq6sLLy8vvHjxonxvEq8aO+3atcOcOXNw8eJF6Ojo4Jdffim0bFBQENLS0lSOD4aMLve9iYiIiEgMGxVvuaSkJEyaNAkJCQnYsmULli9fjgkTJsDBwQHe3t7w8fHBzp07cffuXcTExCAkJAR79+4t9fVtbW1x+fJlJCQk4MmTJ8jJyYG9vT2SkpIQGRmJ27dvY9myZUV+wDcwMMDevXuhpaWF7t27Iz297Ds7nz17FvPnz8e5c+eQlJSEnTt34vHjx3Byciq0vFQqhbGxscrBoU9ERERE6sNGxVvOx8cHWVlZaNWqFcaOHYsJEyZg9OhXv5UPCwuDj48PJk+eDEdHR/Tt2xexsbGwsbEp9fX9/Pzg6OgINzc3WFhYIDo6Gv/5z38wceJE+Pv7o3nz5jh16hRmzpxZ5DUMDQ2xb98+5Ofno2fPnmVeCtbY2BjHjx9Hjx494ODggBkzZmDRokXo3r17ma5DREREVGrcUbtCSfK5budby8PDA82bN8fSpUvVXZW33uwD14XyrtamQvnz91OF8qKa1jEuuVAx3rc0FMpvv/JQKN+sjolQvqGZ2EaL9pm3hPJj7foL5d3OHhPK/5n2Uihfx0RXrfe3NBa7v7622H/Qd5+K7YlT39xAKJ+enSuU/ysju+RCxcjOzRPKW9cQ+/c3qlU9ofyCozdLLvQWU+SJfQzLylaUXKgYmhplWwb+n3S0xH4/Pb2LQ8mFKknuxf1qu7eWSze13buycPUnIiIiIqp+uKRsheLTJCIiIiIiIeypeIvJZDJ1V4GIiIioSpJoVs25DerCRgURgA4nlwnl2wyZLpSX3UsTyvfJuyqUl6SI/WAd7tJaKF8n675Q/r7me0L5vVl1hPKicyLOte4olA9NuyCUvzPBVyhvu2qbUF76IE4ofylwllD+g/U7hPKmP38tlDcYFiiUl2uLzelo/9VRofw5/wYlF6pE4//6VSgvbSz280vx+A+xfMu+QvnpB8TmhNUylgrl7WuKff9R1cHhT+8QmUwGiUSC1NRUtdxfIpFg165db/01iYiIiOjfxUZFBfPw8EBAQEClZ6qixMRESCQSxMXFqbsqREREVNVxSdkKxUYFEREREREJYaOiAvn6+uLYsWMIDQ2FRCKBRCJBYmIijh07hlatWkEqlcLKygrTpk1Dbm5usRkAiIqKgoODA/T09NCpUyfl+dfCw8NhamqKPXv2wNHREfr6+hg4cCAyMzMREREBW1tb1KhRA+PHj4dC8fc61snJyejZsyf09PRQv359bN68Gba2tir7Ydy8eRMdOnSArq4unJ2dcejQoQLv9/79+xg8eDBMTU1hZmaGPn36qNQxNjYWXbt2Rc2aNWFiYoKOHTviwoWix37Xr18fAODi4gKJRAIPD4+y/QUQERERlRZ7KioUGxUVKDQ0FO7u7vDz80NycjKSk5Ohra2NHj16oGXLlrh06RJWrVqFDRs24KuvvioyY21tjfv376N///7o3bs34uLiMGrUKEybNq3APTMzM7Fs2TJERkZi//79kMlk6NevH6KiohAVFYWNGzdizZo12L59uzLj4+ODP//8EzKZDDt27MDatWuRkpKifD0vLw/9+/eHjo4Ozp49i9WrV2Pq1Kkq983JyYGXlxeMjIxw4sQJREdHw9DQEN26dUN29quNmF68eIERI0bg5MmTOHPmDOzt7dGjRw+8ePGi0OcXExMDADh8+DCSk5Oxc+dOsb8QIiIiIvpXcPWnCmRiYgIdHR3o6+ujdu3aAIDp06fD2toaK1asgEQiQaNGjfDnn39i6tSpmDVrVqEZAFi1ahUaNGiARYsWAQAcHR1x5coVfPPNNyr3zMnJUZYFgIEDB2Ljxo149OgRDA0N4ezsjE6dOuHo0aMYMmQIrl+/jsOHDyM2NhZubm4AgPXr18Pe3l55zcOHD+P69es4cOAA6tR5tSrO/Pnz0b17d2WZrVu3Ii8vD+vXr4dE8mo3zrCwMJiamkImk+HDDz9E586dVeq6du1amJqa4tixY+jVq1eB52dhYQEAMDc3V3kWRERERPR2Y6OiksXHx8Pd3V35wRsA2rVrh/T0dDx48AA2NjZF5lq3Vl3mzt3dvUA5fX19ZYMCACwtLWFrawtDQ0OVc697IhISEqClpYUWLVooX2/YsCFq1Kihcm9ra2tlg6Kwe1+6dAm3bt2CkZGRyvmXL1/i9u3bAIBHjx5hxowZkMlkSElJgUKhQGZmJpKSkgp9z6Ull8shl8tVzuVmZ0NLR0foukRERFR9SLijdoVio+Idp62trfK1RCIp9FxeXl6F3jc9PR2urq7YtGlTgdde9ziMGDECT58+RWhoKOrVqwepVAp3d3fl8KjyCgkJwZw5c1TOdfAeC4/h/kLXJSIiIqLyYaOiguno6KhMinZycsKOHTuQn5+v7K2Ijo6GkZER3nvvvUIzr3O7d+9WOXfmzBnh+jk6OiI3NxcXL16Eq6srAODWrVt49uyZyr3v37+P5ORkWFlZFXrvFi1aYOvWrahVqxaMjY0LvVd0dDRWrlyJHj16AHg1sfvJkydF1k3n/3sa/vks/ikoKAiTJk1SOffNscRiM0REREQqquiEaXVhv08Fs7W1xdmzZ5GYmIgnT57g888/x/379zFu3Dhcv34dv/76K2bPno1JkyZB4/+73f6ZycvLw5gxY3Dz5k1MmTIFCQkJ2Lx5M8LDw4Xr16hRI3h6emL06NGIiYnBxYsXMXr0aOjp6SkbPZ6ennBwcMCIESNw6dIlnDhxAtOnq+4Y7e3tjZo1a6JPnz44ceIE7t69C5lMhvHjx+PBgwcAAHt7e2zcuBHx8fE4e/YsvL29oaenV2TdatWqBT09Pezfvx+PHj1CWlrhu0xLpVIYGxurHBz6RERERKQ+bFRUsMDAQGhqasLZ2RkWFhbIyclBVFQUYmJi0KxZM4wZMwYjR47EjBkziswkJSXBxsYGO3bswK5du9CsWTOsXr0a8+fPr5A6/vjjj7C0tESHDh3Qr18/+Pn5wcjICLq6ugAADQ0N/PLLL8jKykKrVq0watQofP311yrX0NfXx/Hjx2FjY4P+/fvDyckJI0eOxMuXL5U9Fxs2bMCzZ8/QokULDB8+HOPHj0etWrWKrJeWlhaWLVuGNWvWoE6dOujTp0+FvF8iIiKiAiQa6juqIEl+fn6+uitB6vXgwQNYW1vj8OHD6NKli7qrUy6zD1wXyk+896NQPnvI9JILFUN2r/BemdLqn39VKC/RFOsC/qNO65ILFaNO1n2h/H3pe0L5KykZQvmUdHnJhYpxrnVHoXxoWtH7v5TGnQm+QnnbVduE8tIHcUL5S4GzhPKm63eI5X/+uuRCxTAYFiiUl2sbCOXbf3VUKH/Ov0HJhYqhVcdRKJ+5Y6FQXtpY7OeX4vEfYvmWfYXy0w/cEsrXMpYK5e1rin3/DWhSp+RClSTvdoza7q3RoJXa7l1ZOKeiGvrtt9+Qnp6OJk2aIDk5GV988QVsbW3RoUMHdVeNiIiIiN5BbFRUQzk5Ofjyyy9x584dGBkZoW3btti0aVOBVaOIiIiIqqwqOgxJXdioqIa8vLzg5eWl7moQERERURXBRgVVCZoakpILFSNrsNiciFtPXwrlbUx0hfI3pG2E8qkvc4TyOc/E3v/5LFOhfFLaY6F8WqbY+xclOidigkmLkgsVY0unYUL5L6LFNrTcdfK5UP5M6HdC+e3OYmPqRzXqIZTf0E5s7576pmJzovIFtzHalKwvlB8hOKT+YcdPhfJmumLP74JWI6F83v0XQvk29c2E8veeZQrlr6ekC+XVKZ89FRWKT/Nf5OHhgYCAgHLnZTIZJBIJUlNTK6xOZSGRSLBr1663/ppERERE9O9iT8W/aOfOnZy3UIzExETUr18fFy9eRPPmzdVdHSIiIiIqJTYq/kVmZmJdlERERERUQTj8qUJVy6fp4eGBcePGISAgADVq1IClpSXWrVuHjIwMfPzxxzAyMkLDhg2xb98+AIBCocDIkSNRv3596OnpwdHREaGhoSrXzM3Nxfjx42Fqagpzc3NMnToVI0aMQN++fVXu++bwJ7lcjqlTp8La2hpSqRQNGzbEhg0blK9HRUXBwcEBenp66NSpExITE1XuGR4eDlNTU+zZsweOjo7Q19fHwIEDkZmZiYiICNja2qJGjRoYP348FAqFMpecnIyePXtCT08P9evXx+bNm2Fra4ulS5cqy9y8eRMdOnSArq4unJ2dcejQoQLP8f79+xg8eDBMTU1hZmaGPn36qNQxNjYWXbt2Rc2aNWFiYoKOHTviwoWix47Xr18fAODi4gKJRAIPD48iyxIRERHR26NaNioAICIiAjVr1kRMTAzGjRuHzz77DIMGDULbtm1x4cIFfPjhhxg+fDgyMzORl5eH9957Dz///DOuXbuGWbNm4csvv8S2bX9v+PTNN99g06ZNCAsLQ3R0NJ4/f17iXAEfHx9s2bIFy5YtQ3x8PNasWQNDQ0MArz6w9+/fH71790ZcXBxGjRqFadOmFbhGZmYmli1bhsjISOzfvx8ymQz9+vVDVFQUoqKisHHjRqxZswbbt29Xue+ff/4JmUyGHTt2YO3atUhJSVG+npeXh/79+0NHRwdnz57F6tWrMXXqVJX75uTkwMvLC0ZGRjhx4gSio6NhaGiIbt26ITv71aTDFy9eYMSIETh58iTOnDkDe3t79OjRAy9eFD4pLSbm1SY0hw8fRnJyMnbu3Fns8yMiIiIqN4lEfUcVVG2HPzVr1gwzZswAAAQFBWHBggWoWbMm/Pz8AACzZs3CqlWrcPnyZbRp0wZz5sxRZuvXr4/Tp09j27ZtGDx4MABg+fLlCAoKQr9+/QAAK1asQFRUVJH3v3HjBrZt24ZDhw7B09MTAGBnZ6d8fdWqVWjQoAEWLVoEAHB0dMSVK1fwzTffqFwnJydHWRYABg4ciI0bN+LRo0cwNDSEs7MzOnXqhKNHj2LIkCG4fv06Dh8+jNjYWLi5uQEA1q9fD3t7e+U1Dx8+jOvXr+PAgQOoU+fVshzz589H9+7dlWW2bt2KvLw8rF+/HpL//8cRFhYGU1NTyGQyfPjhh+jcubNKXdeuXQtTU1McO3YMvXr1KvBMLCwsAADm5uaoXbt2kc+OiIiIiN4u1bZR0bRpU+WfNTU1YW5ujiZNmijPWVpaAoDyN/jff/89fvjhByQlJSErKwvZ2dnKycRpaWl49OgRWrVqpXJNV1dX5OUVvlZfXFwcNDU10bFjx0Jfj4+PR+vWqsscuru7Fyinr6+vbFC8rretra2yx+P1udfvIyEhAVpaWmjR4u8lKBs2bIgaNWqo3Nva2lrZoCjs3pcuXcKtW7dgZGSkcv7ly5e4ffs2AODRo0eYMWMGZDIZUlJSoFAokJmZiaQkseUn5XI55HK5yrnc7Gxo6egIXZeIiIiqEY1qO2CnUlTbRsU/V2GSSCQq517/9j0vLw+RkZEIDAzEokWL4O7uDiMjI3z33Xc4e/Zsue+vp6dX7uybSnofr88V1bgpr/T0dLi6umLTpk0FXnvd4zBixAg8ffoUoaGhqFevHqRSKdzd3ZXDo8orJCREpecIADz+OxadfMYJXZeIiIiIyodNtFKIjo5G27Zt8fnnn8PFxQUNGzZU/jYeAExMTGBpaYnY2FjlOYVCUeyk5CZNmiAvLw/Hjh0r9HUnJyflHIPXzpw5I/hOXg2jys3NxcWLF5Xnbt26hWfPnqnc+/79+0hOTi7y3i1atMDNmzdRq1YtNGzYUOUwMTEB8Oq5jR8/Hj169EDjxo0hlUrx5MmTIuum8/89DW9OKi9MUFAQ0tLSVI72H4ltfkRERERE5cdGRSnY29vj3LlzOHDgAG7cuIGZM2eqNCAAYNy4cQgJCcGvv/6KhIQETJgwAc+ePVP2ePyTra0tRowYgU8++QS7du3C3bt3IZPJlJO/x4wZg5s3b2LKlClISEjA5s2bER4eLvxeGjVqBE9PT4wePRoxMTG4ePEiRo8eDT09PWVdPT094eDggBEjRuDSpUs4ceIEpk9X3XHa29sbNWvWRJ8+fXDixAll/cePH48HDx4on9vGjRsRHx+Ps2fPwtvbu9gemlq1akFPTw/79+/Ho0ePkJaWVmg5qVQKY2NjlYNDn4iIiKgs8iUaajuqoqr5rirYp59+iv79+2PIkCFo3bo1nj59is8//1ylzNSpUzF06FD4+PjA3d0dhoaG8PLygq6ubpHXXbVqFQYOHIjPP/8cjRo1gp+fHzIyMgAANjY22LFjB3bt2oVmzZph9erVmD9/foW8nx9//BGWlpbo0KED+vXrBz8/PxgZGSnrqqGhgV9++QVZWVlo1aoVRo0aha+//lrlGvr6+jh+/DhsbGzQv39/ODk5YeTIkXj58iWMjY0BABs2bMCzZ8/QokULDB8+HOPHj0etWrWKrJeWlhaWLVuGNWvWoE6dOujTp0+FvF8iIiKid933338PW1tb6OrqonXr1gVGtBQlMjISEolEZZuDyiDJz8/Pr9Q7VFN5eXlwcnLC4MGDMW/ePHVXp1gPHjyAtbU1Dh8+jC5duqi7OuUy91CCUN6v5XtC+Vt/vRTKa2uKLS9nLBWbHpX6Mkcon6MQ+zHyV5bY/ZPSsoTyaZli9xc1tbWFUH6CSYuSCxVjS6dhQvkvpvsK5XedTBTKn/G1FMpvbzlUKD+qUQ+h/IYVk4Ty9U3F5uiNWnlaKD9pUJOSCxVjhKu1UP7Ok8KXKS8tM11NofyFhxlC+TzBT2GiPz/vPcsUymfnis3ZnN7FQSgvIvePeLXdW6uuU5nKb926FT4+Pli9ejVat26NpUuX4ueff0ZCQkKxv7BNTEzEBx98ADs7O5iZmZW43YEI9lRUkHv37mHdunW4ceMGrly5gs8++wx3797FsGFi/1lXht9++w27d+/G3bt3cerUKXz00UewtbVFhw4d1F01IiIiIvqHxYsXw8/PDx9//DGcnZ2xevVq6Ovr44cffigyo1Ao4O3tjTlz5qhsW1BZ2KioIBoaGggPD0fLli3Rrl07XLlyBYcPH4aTU9laov+GnJwcfPnll2jcuDH69esHCwsLyGSyAqtGEREREVHFk8vleP78ucrxz+XyX8vOzsb58+eV+5oBrz53enp64vTponsa586di1q1amHkyJEVXv/CVNslZSuatbU1oqOj1V2NUvHy8oKXl5e6q0FERESkPmqcMF3Y8vizZ89GcHBwgbJPnjyBQqFQ7qH2mqWlJa5fv17o9U+ePIkNGzYgLi6uoqpcIjYqqEpQCA5KrfVnbMmFivGkhotQfvmJu0L5FZ5Fj6csDYmk8N+OlNapdKOSCxWjZ12xOSVJlmJzEq49FhsTnZIu9vzuTPAVyovOiRh6dLNQPnuqj1D+iM1JoXzeQ7E5JcPrthHKr/19r1C+dd1goXxKhtiY+to2JkL5YTbqnZpZL+OOUD5Nai+U76j1h1D+gVFDofxnP98UyreoV6PkQsVweU/s+6e6CgoKwqRJqvOppFJphVz7xYsXGD58ONatW4eaNWtWyDVLo8oOf7K1tcXSpUsr7foeHh4ICAiosOv5+vqWOCu/ou9ZFsHBwcodxN/maxIRERGVikRDbUdhy+MX1aioWbMmNDU18ejRI5Xzjx49Qu3atQuUv337NhITE9G7d29oaWlBS0sLP/74I3bv3g0tLS2VvdYqEnsqymnnzp2cg1DBfH19kZqaWqkrExARERG9S3R0dODq6oojR44ofwGdl5eHI0eOwN/fv0D5Ro0a4cqVKyrnZsyYgRcvXiA0NBTW1mIrrhWFjYpyMjMzU3cViIiIiKic3qVN6CZNmoQRI0bAzc0NrVq1wtKlS5GRkYGPP/4YAODj44O6desiJCQEurq6eP/991XypqamAFDgfEV6d57mP3h4eMDf3x/+/v4wMTFBzZo1MXPmTLy57UZmZiY++eQTGBkZwcbGBmvXrlW+1rlz5wKtu8ePH0NHRwdHjhwBAKxcuRL29vbQ1dWFpaUlBg4cqHL/N4ciyeVyTJ06FdbW1pBKpWjYsCE2bNgA4NWSXiNHjkT9+vWhp6cHR0dHhIaGFvv+MjIy4OPjA0NDQ1hZWWHRokUFytja2uKrr75SlqtXrx52796Nx48fo0+fPjA0NETTpk1x7tw5ldy6detgbW0NfX199OvXD4sXL1Z+s722YMECWFpawsjISLmp3T+tX78eTk5O0NXVRaNGjbBy5UqV16dOnQoHBwfo6+vDzs4OM2fORE5O4WN/g4ODERERgV9//RUSiQQSiQQymazYZ0RERERUHQwZMgQLFy7ErFmz0Lx5c8TFxWH//v3KydtJSUlITk5Wax3f2UYFAEREREBLSwsxMTEIDQ3F4sWLsX79euXrixYtgpubGy5evIjPP/8cn332GRISXm2SNmrUKGzevFll+a6ffvoJdevWRefOnXHu3DmMHz8ec+fORUJCAvbv31/sPg4+Pj7YsmULli1bhvj4eKxZswaGhoYAXnVRvffee/j5559x7do1zJo1C19++SW2bdtW5PWmTJmCY8eO4ddff8XBgwchk8lw4cKFAuWWLFmCdu3a4eLFi+jZsyeGDx8OHx8f/Pe//8WFCxfQoEED+Pj4KBtb0dHRGDNmDCZMmIC4uDh07dq1wG7Z27ZtQ3BwMObPn49z587BysqqQINh06ZNmDVrFr7++mvEx8dj/vz5mDlzJiIiIpRljIyMEB4ejmvXriE0NBTr1q3DkiVLCn2/gYGBGDx4MLp164bk5GQkJyejbdu2RT4fIiIiourE398f9+7dg1wux9mzZ9G6dWvlazKZDOHh4UVmw8PDK314+Ts9/Mna2hpLliyBRCKBo6Mjrly5giVLlsDPzw8A0KNHD3z++ecAXv3WfMmSJTh69CgcHR3Rv39/+Pv749dff8XgwYMBvHrgvr6+kEgkSEpKgoGBAXr16gUjIyPUq1cPLi6Fr/Bz48YNbNu2DYcOHVKuIfzmJiPa2toqy4bVr18fp0+fxrZt25T3flN6ejo2bNiAn376SbnDdUREBN57r+Cuzz169MCnn34KAJg1axZWrVqFli1bYtCgQcr37e7urpzMs3z5cnTv3h2BgYEAAAcHB5w6dQp79uxRXnPp0qUYOXKkcl3jr776CocPH1bprZg9ezYWLVqE/v37K9/TtWvXsGbNGowYMQLAq/F7r9na2iIwMBCRkZH44osvCrwPQ0ND6OnpQS6XFzrpiIiIiKhCvUPDn94F7/TTbNOmDSSSv5eidHd3x82bN6FQKAAATZs2Vb4mkUhQu3ZtpKSkAAB0dXUxfPhw5U6EFy5cwNWrV+Hr6wsA6Nq1K+rVqwc7OzsMHz4cmzZtQmZm4VvZx8XFQVNTEx07diyyrt9//z1cXV1hYWEBQ0NDrF27FklJSYWWvX37NrKzs1VaoGZmZnB0dCxQ9s33+LoLrEmTJgXOvX7fCQkJaNWqlco1/vl1fHy8yr2BV8/2tYyMDNy+fRsjR46EoaGh8vjqq69UVhTYunUr2rVrh9q1a8PQ0BAzZswo8j2XRWEbxuRmZwtfl4iIiIjK551uVJTkn6szSSQS5OXlKb8eNWoUDh06hAcPHiAsLAydO3dGvXr1ALwaunPhwgVs2bIFVlZWmDVrFpo1a4bU1NQC99HT0yu2HpGRkQgMDMTIkSNx8OBBxMXF4eOPP0Z2BXwQfvM9vm5gFXbuzfctKj09HcCruRlxcXHK4+rVqzhz5gwA4PTp0/D29kaPHj2wZ88eXLx4EdOnT6+Q9xwSEgITExOV4+TWtSUHiYiIiF6TSNR3VEHvdKPi7NmzKl+fOXMG9vb20NTULFW+SZMmcHNzw7p167B582Z88sknKq9raWnB09MT3377LS5fvozExET89ttvhV4nLy8Px44dK/Q+0dHRaNu2LT7//HO4uLigYcOGxa4R3KBBA2hra6u8v2fPnuHGjRulel/FcXR0RGys6kZv//zaycmp0Gf7mqWlJerUqYM7d+6gYcOGKkf9+vUBAKdOnUK9evUwffp0uLm5wd7eHvfu3Su2bjo6OspepuIEBQUhLS1N5fhgyOgSc0RERERUOd7pORVJSUmYNGkSPv30U1y4cAHLly8vdJWk4owaNQr+/v4wMDBAv379lOf37NmDO3fuoEOHDqhRowaioqKQl5dX6BAkW1tbjBgxAp988gmWLVuGZs2a4d69e0hJScHgwYNhb2+PH3/8EQcOHED9+vWxceNGxMbGKj+A/5OhoSFGjhyJKVOmwNzcHLVq1cL06dOhoSHeBhw3bhw6dOiAxYsXo3fv3vjtt9+wb98+lWFkEyZMgK+vL9zc3NCuXTts2rQJv//+u8o8kTlz5mD8+PEwMTFBt27dIJfLce7cOTx79gyTJk2Cvb09kpKSEBkZiZYtW2Lv3r345Zdfiq2bra0tDhw4gISEBJibm8PExKTQvUCkUmmBDWK0dHQEnwwRERERldc73VPh4+ODrKwstGrVCmPHjsWECRMwenTZfmM9dOhQaGlpYejQodDV1VWeNzU1xc6dO9G5c2c4OTlh9erV2LJlCxo3blzodVatWoWBAwfi888/R6NGjeDn54eMjAwAwKeffor+/ftjyJAhaN26NZ4+faqcQF6U7777Du3bt0fv3r3h6emJDz74AK6urmV6b4Vp164dVq9ejcWLF6NZs2bYv38/Jk6cqPLehwwZgpkzZ+KLL76Aq6sr7t27h88++0zlOqNGjcL69esRFhaGJk2aoGPHjggPD1c2lP7zn/9g4sSJ8Pf3R/PmzXHq1CnMnDmz2Lr5+fnB0dERbm5usLCwQHR0tPD7JSIiIiqUGnfUrook+W9u7PAO8fDwQPPmzbF06VKh6yQmJqJBgwaIjY1FixYtKqZy7xg/Pz9cv34dJ06cUHdVym32getC+VnWD4Xy12oUvjJYaS0/cVcov8KzllBekiMvuVAxTqUbCeXdzXKF8km5BkL5a48zhPIp6WLPr92qcUL5NvfENjMaenSzUN5y/36h/OQ/xe6v5yz2s9tgzG6h/Nqk00L5TjdiSy5UjJSMwvf/Ka0Ze64J5fcMEtudV9vCRiivuHdJKJ9mZi+UN3kqNjT5gVFDofxnP18WyreoV0Mo7/KeiVB+QJM6QnkROY/FF48pL9Hv+7fROz38SUROTg6ePn2KGTNmoE2bNtWqQbFw4UJ07doVBgYG2LdvHyIiIgrsQ0FERERUlb1LO2q/C6ptoyI6OhqdOnWCg4MDtm/fru7q/KtiYmLw7bff4sWLF7Czs8OyZcswatQodVeLiIiIiN5R72yjQiaTCeU9PDzwjo78ElbcTt5ERERE1UIFLIBDf3tn51QQvWnuoQShvJmh2OpRf/yVJZR3szEVyj94/rLkQsVQ5In9GDDXF3t+onMSROuv7vyU9vWE8oujxcYFZ+eK7WPzqFs3obzWdrE5DXa1xObUpL8Um9OTlV3yUtjFGesuNrb6bqrYv5/0bLH3f/XRC6H8lI5icwq2Xf5TKC/6/k2kYr+fTVbzzz8dTbEP1o9fiNV/VteCq2r+W7L/EvveEaFjpr65JJWFTbR3iEwmg0QiKXQDvn+DRCLBrl273vprEhEREdG/i42KMvDw8EBAQIC6q1FlJSYmQiKRIC4uTt1VISIioqqOS8pWqKr5rtQkPz8fubli3ahERERERO8aNipKydfXF8eOHUNoaCgkEgkkEgnCw8MhkUiwb98+uLq6QiqV4uTJk/D19UXfvn1V8gEBAfDw8FB+nZeXh5CQENSvXx96enpo1qxZgVWooqKi4ODgAD09PXTq1AmJiYkqr4eHh8PU1BR79uyBo6Mj9PX1MXDgQGRmZiIiIgK2traoUaMGxo8fD4Xi7zG/ycnJ6NmzJ/T09FC/fn1s3rwZtra2Knt+3Lx5Ex06dICuri6cnZ1x6NChAs/k/v37GDx4MExNTWFmZoY+ffqo1DE2NhZdu3ZFzZo1YWJigo4dO+LChQtFPuPXG+e5uLhAIpGoPC8iIiKiCsWeigr1zq7+9G8LDQ3FjRs38P7772Pu3LkAgN9//x0AMG3aNCxcuBB2dnaoUaN0m8iEhITgp59+wurVq2Fvb4/jx4/jv//9LywsLNCxY0fcv38f/fv3x9ixYzF69GicO3cOkydPLnCdzMxMLFu2DJGRkXjx4gX69++Pfv36wdTUFFFRUbhz5w4GDBiAdu3aYciQIQBe7UT+5MkTyGQyaGtrY9KkSUhJSVFeMy8vD/3794elpSXOnj2LtLS0AsO+cnJy4OXlBXd3d5w4cQJaWlr46quv0K1bN1y+fBk6Ojp48eIFRowYgeXLlyM/Px+LFi1Cjx49cPPmTRgZFdwsLSYmBq1atcLhw4fRuHFj6OiITf4lIiIion8HGxWlZGJiAh0dHejr66N27doAgOvXX+3iPHfuXHTt2rXU15LL5Zg/fz4OHz4Md3d3AICdnR1OnjyJNWvWoGPHjli1ahUaNGiARYsWAQAcHR1x5coVfPPNNyrXysnJUZYFgIEDB2Ljxo149OgRDA0N4ezsjE6dOuHo0aMYMmQIrl+/jsOHDyM2NhZubm4AgPXr18Pe/u8dRQ8fPozr16/jwIEDqFPn1eoE8+fPR/fu3ZVltm7diry8PKxfvx4SiQQAEBYWBlNTU8hkMnz44Yfo3LmzSl3Xrl0LU1NTHDt2DL169SrwXCwsLAAA5ubmymdMRERERG8/NioqwOsP56V169YtZGZmFmiIZGdnw8XFBQAQHx+P1q1bq7z+ugHyJn19fWWDAgAsLS1ha2sLQ0NDlXOveyISEhKgpaWlsoN4w4YNVXpY4uPjYW1trWxQFHbvS5cu4datWwV6HF6+fInbt28DAB49eoQZM2ZAJpMhJSUFCoUCmZmZSEoSW/5SLpdDLlddwi43Oxta7NkgIiKi0qqiw5DUhY2KCmBgoLpGuoaGRoGN9XJycpR/Tk9PBwDs3bsXdevWVSknlUrLdG9tbW2VryUSSaHn8vLE1qH/p/T0dLi6umLTpk0FXnvd4zBixAg8ffoUoaGhqFevHqRSKdzd3ZGdnS1075CQEMyZM0flnMd/x6KTzzih6xIRERFR+bBRUQY6OjoqE56LYmFhgatXr6qci4uLU37Yd3Z2hlQqRVJSEjp27FjoNZycnLB7t+qGUGfOnClnzf/m6OiI3NxcXLx4Ea6urgBe9Zw8e/ZM5d73799HcnIyrKysCr13ixYtsHXrVtSqVQvGxsaF3is6OhorV65Ejx49ALya2P3kyZMi6/Z6DkVJzzgoKAiTJk1SObfwxL1iM0RERERvymdPRYXi0ywDW1tbnD17FomJiXjy5EmRv/3v3Lkzzp07hx9//BE3b97E7NmzVRoZRkZGCAwMxMSJExEREYHbt2/jwoULWL58OSIiIgAAY8aMwc2bNzFlyhQkJCRg8+bNCA8PF34PjRo1gqenJ0aPHo2YmBhcvHgRo0ePhp6ennJuhKenJxwcHDBixAhcunQJJ06cwPTp01Wu4+3tjZo1a6JPnz44ceIE7t69C5lMhvHjx+PBgwcAAHt7e2zcuBHx8fE4e/YsvL29oaenV2TdatWqBT09Pezfvx+PHj1CWlpaoeWkUimMjY1VDg59IiIiIlIfNirKIDAwEJqamnB2doaFhUWRcwO8vLwwc+ZMfPHFF2jZsiVevHgBHx8flTLz5s3DzJkzERISAicnJ3Tr1g179+5VLqtqY2ODHTt2YNeuXWjWrBlWr16N+fPnV8j7+PHHH2FpaYkOHTqgX79+8PPzg5GREXR1dQG8Gr71yy+/ICsrC61atcKoUaPw9ddfq1xDX18fx48fh42NDfr37w8nJyeMHDkSL1++VPZcbNiwAc+ePUOLFi0wfPhwjB8/HrVq1SqyXlpaWli2bBnWrFmDOnXqoE+fPhXyfomIiIgK4JKyFUqS/8/B/1TtPHjwANbW1jh8+DC6dOmi7uqUy9xDCUJ5M0Oxno4//soSyrvZmArlHzx/KZRX5In9GDDXF3t+KenykgsVQ7T+6s5PaV9PKL84Wmzxg+xcsTlXj7p1E8prbd9dcqFi2NUyKLlQMdJfim1ampVd8rDY4ox1txHK300V+/eTni32/q8+eiGUn9KxoVB+2+U/hfKi799EKjaSPFnNP/90NMU+4D5+IVb/WV0dhfIi5C9S1XZvqZGp2u5dWTinohr67bffkJ6ejiZNmiA5ORlffPEFbG1t0aFDB3VXjYiIiIjeQWxUVEM5OTn48ssvcefOHRgZGaFt27bYtGlTgVWjiIiIiKqs/59LShWDjYpqyMvLC15eXuquBhERERFVEWxUUJUgOqZ0VLOiJ5CXxuF76UL5vb8/FMrP8hQbk6ynJfbbml8Tngrl/VzrlFyoGPdf5JRcqBg3nmQI5Z9kit1f+iBOKL/r5HOh/BGbk0L5LwXnROQO/I9Q3v8vseW2XebFCuVjWl4Syh9P8RPK336WKZQX/fnp3/o9obwobQ2xn1+icyIUgjNTRec0/RpzXyjf3M5cKN+kbuHLyr8TquiEaXXh03yLeHh4ICAgQN3V+NeEh4fD1NRU3dUgIiIiIkFsVFCZyGQySCQSpKamCl9ryJAhuHHjhvLr4OBgNG/eXPi6RERERPTv4vCnKiI/Px8KhQJaWu/GX2lOTg709PSK3QyPiIiIqLJwR+2Kxaf5ltq4cSPc3NxgZGSE2rVrY9iwYUhJSVG+/rrHYN++fXB1dYVUKsXJkyfx4sULeHt7w8DAAFZWVliyZEmBYVVyuRyBgYGoW7cuDAwM0Lp1a8hkMuXr9+7dQ+/evVGjRg0YGBigcePGiIqKQmJiIjp16gQAqFGjBiQSCXx9fQEAeXl5+Pbbb9GwYUNIpVLY2NgoN8xLTEyERCLB1q1b0bFjR+jq6mLTpk0qw5/Cw8MxZ84cXLp0CRKJBBKJpEJ2ECciIiKiyvdu/Fq7GsrJycG8efPg6OiIlJQUTJo0Cb6+voiKilIpN23aNCxcuBB2dnaoUaMGJk2ahOjoaOzevRuWlpaYNWsWLly4oDKsyN/fH9euXUNkZCTq1KmDX375Bd26dcOVK1dgb2+PsWPHIjs7G8ePH4eBgQGuXbsGQ0NDWFtbY8eOHRgwYAASEhJgbGys7GkICgrCunXrsGTJEnzwwQdITk7G9evXC9R10aJFcHFxga6uLg4cOKB8bciQIbh69Sr279+Pw4cPAwBMTEwq6ekSERFRtceeigrFRsVb6pNPPlH+2c7ODsuWLUPLli2Rnp4OQ0ND5Wtz585F165dAQAvXrxAREQENm/erNwZOywsDHXq/L2yTlJSEsLCwpCUlKQ8HxgYiP379yMsLAzz589HUlISBgwYgCZNmijv/5qZmRkAoFatWspehhcvXiA0NBQrVqzAiBEjAAANGjTABx98oPKeAgIC0L9//0Lfr56eHgwNDaGlpYXatWuX/YERERERkdqwUfGWOn/+PIKDg3Hp0iU8e/YMeXmvlpxLSkqCs7Ozspybm5vyz3fu3EFOTg5atWqlPGdiYgJHR0fl11euXIFCoYCDg4PK/eRyOczNXy0rN378eHz22Wc4ePAgPD09MWDAADRt2rTIusbHx0MulysbMkV5s64i5HI55HK5yrnc7Gxo6ehUyPWJiIiIqGzY7/MWysjIgJeXF4yNjbFp0ybExsbil19+AQBkZ2erlDUwMCjTtdPT06GpqYnz588jLi5OecTHxyM0NBQAMGrUKNy5cwfDhw/HlStX4ObmhuXLlxd5zdJOti5rXYsSEhICExMTlePk1rUVcm0iIiKqHvIlErUdVREbFW+h69ev4+nTp1iwYAHat2+PRo0aqUzSLoqdnR20tbURG/v3Rk5paWkqy7a6uLhAoVAgJSUFDRs2VDneHHZkbW2NMWPGYOfOnZg8eTLWrVsHAND5/94AhUKhLGtvbw89PT0cOXJE6H3r6OioXLcoQUFBSEtLUzk+GDJa6N5EREREVH4c/vQWsrGxgY6ODpYvX44xY8bg6tWrmDdvXok5IyMjjBgxAlOmTIGZmRlq1aqF2bNnQ0NDA5L/bxU7ODjA29sbPj4+yknTjx8/xpEjR9C0aVP07NkTAQEB6N69OxwcHPDs2TMcPXoUTk5OAIB69epBIpFgz5496NGjh3IuxNSpU/HFF19AR0cH7dq1w+PHj/H7779j5MiRpX7ftra2uHv3LuLi4vDee+/ByMgIUqm0QDmpVFrgPIc+ERERUVnkC+6GTqrYU/EWsrCwQHh4OH7++Wc4OztjwYIFWLhwYamyixcvhru7O3r16gVPT0+0a9cOTk5O0NXVVZYJCwuDj48PJk+eDEdHR/Tt2xexsbGwsbEB8KoXYuzYsXByckK3bt3g4OCAlStXAgDq1q2LOXPmYNq0abC0tIS/vz8AYObMmZg8eTJmzZoFJycnDBkypFS9K28aMGAAunXrhk6dOsHCwgJbtmwpU56IiIiI1EOSn892WlWWkZGBunXrYtGiRWXqNXjXzD5wveRCxQhqby2UP3wvXSi/9/eHQvlZng2F8npaYuM7f014KpTv42gulL//Ikcof+NJhlD+SabY/f3Mk4XyrTc9F8ofsTkplP/SeKBQPnfgf4Tyy/46I5R3mRdbcqFixLS8JJQ/7uInlL/9LFMor8gT+xgw2rVOyYWKoffGL73K45erYv9+8gQ/BikEP0U9SMsSyv8ac18o39xO7Odvk7rGQvlRreoJ5UWkZ4o9exGG+lVv818Of6piLl68iOvXr6NVq1ZIS0vD3LlzAQB9+vRRc82IiIiIqKpio6IKWrhwIRISEqCjowNXV1ecOHECNWvWVHe1iIiIiKiKYqOiinFxccH58+fVXQ0iIiKitxrH/1csNiqIAFzu31so/+FPPwrl3b3shfL6x8KE8hItbaF8a5ePhPJ6MduF8rZtBgnlU7NyhfKZOXlC+UuBs4TyZ0K/E8rnPWwhlLfLFtuDxl9wTsR4szZC+YvHFwjlM+PF5jR8qCc2p+peTTuh/MifLgrlP3cQ/CihayMU7/7gf0J5DQOxOQFadcXmtOU0cCy5UDHq19AXymfllLyUe3GMdcX+/6Cqg6s/VQCZTAaJRILU1FR1V6VcwsPDYWpqqu5qEBEREf1r8vLVd1RF1aZR4eHhgYCAgErPVDaJRIJdu3apuxpERERERErVplFBRERERESVo1o0Knx9fXHs2DGEhoZCIpFAIpEgMTERx44dQ6tWrSCVSmFlZYVp06YhNze32AwAREVFwcHBAXp6eujUqZPy/GuvhxPt2bMHjo6O0NfXx8CBA5GZmYmIiAjY2tqiRo0aGD9+PBSKv8cyJicno2fPntDT00P9+vWxefNm2NraYunSpQBe7TgNAP369YNEIlF+DQCrVq1CgwYNoKOjA0dHR2zcuFGlTqmpqfj0009haWkJXV1dvP/++9izZ49KmQMHDsDJyQmGhobo1q0bkpP/Xvs7NjYWXbt2Rc2aNWFiYoKOHTviwoULKnmJRII1a9agV69e0NfXh5OTE06fPo1bt27Bw8MDBgYGaNu2LW7fvq3MBAcHo3nz5lizZg2sra2hr6+PwYMHIy0trdR/v0RERERllZ+fr7ajKqoWjYrQ0FC4u7vDz88PycnJSE5Ohra2Nnr06IGWLVvi0qVLWLVqFTZs2ICvvvqqyIy1tTXu37+P/v37o3fv3oiLi8OoUaMwbdq0AvfMzMzEsmXLEBkZif3790Mmk6Ffv36IiopCVFQUNm7ciDVr1mD79r8nqPr4+ODPP/+ETCbDjh07sHbtWpVdqWNjX23QFBYWhuTkZOXXv/zyCyZMmIDJkyfj6tWr+PTTT/Hxxx/j6NGjAIC8vDx0794d0dHR+Omnn3Dt2jUsWLAAmpqaKvVduHAhNm7ciOPHjyMpKQmBgYHK11+8eIERI0bg5MmTOHPmDOzt7dGjRw+8ePFC5X3PmzcPPj4+iIuLQ6NGjTBs2DB8+umnCAoKwrlz55Cfn6/chfu1W7duYdu2bfjf//6H/fv34+LFi/j888/L9XdNRERERP++arH6k4mJCXR0dKCvr4/atWsDAKZPnw5ra2usWLECEokEjRo1wp9//ompU6di1qxZhWaAv3sEFi1aBABwdHTElStX8M0336jcMycnR1kWAAYOHIiNGzfi0aNHMDQ0hLOzMzp16oSjR49iyJAhuH79Og4fPozY2Fi4ubkBANavXw97+79XBbKwsAAAmJqaqtRp4cKF8PX1VX4QnzRpEs6cOYOFCxeiU6dOOHz4MGJiYhAfHw8HBwcAgJ2d6mohOTk5WL16tbK+/v7+yo3zAKBz584q5deuXQtTU1McO3YMvXr1Up7/+OOPMXjwYADA1KlT4e7ujpkzZ8LLywsAMGHCBHz88ccq13r58iV+/PFH1P0/9u48LKry///4c9hXAVPBBR2RRVDEXXFB3MKNb6GmWYmaa4ak5lrulpSJe6mZiZpLFm4puQsZpWiCHxfEldDErVRElP33hz8nRxDUG0Px/biuc13Omft1zn1mAOeeezkVKwIwb948OnbsSGhoqN51CiGEEEIUlZI6Ybq4vBQ9FfmJj4/H29sbjUaj29e0aVNSU1O5cOFCgblGjRrp7fP29s5TzsLCQvcBHcDe3h6tVouVlZXevvs9EQkJCRgZGVG37r9LOzo7O2NnZ/dY19K0aVO9fU2bNiU+Ph6AuLg4KlWqpGtQ5Ofh+pYvX16vl+Ty5cv0798fFxcXbGxsKFWqFKmpqSQlJekdp1atWnrXB+Dp6am37+7du6SkpOj2Va5cWdeggHuvZ05ODgkJCfnWNT09nZSUFL0tKyPjkdcmhBBCCCGerZe2UfGsGRvrr9us0Wjy3ZeTo7a+/eMwNzcvtEx+dXtwzF+vXr2Ii4tjzpw5/Pbbb8TFxfHKK6+Q8dCH+QePc7/Blt8+lesOCQnBxsZGb/v1+6+f+nhCCCGEePnkFuNWEr00jQoTExO9SdH3JxE/+ME5Ojoaa2trKlWqlG/mfi4mJkZv3759ajdugnvDqLKysoiN/fcmRKdPn+b69et65YyNjfOtU3R0tN6+6OhoPDw8gHu9BxcuXODkyZNPXb/o6GiCg4Pp0KEDNWrUwNTUlGvXrj318R6UlJTExYsXdY/37duHgYEBbm753xBo7Nix3Lx5U29r1n1AkdRFCCGEEEI8uZemUaHVatm/fz+JiYlcu3aNwYMHc/78eYYMGcKJEyfYuHEjEydOZPjw4RgYGOSbycnJYdCgQZw6dYqRI0eSkJDAqlWrCAsLU65f9erVadOmDQMGDCAmJobY2FgGDBiAubm53hAtrVbLrl27uHTpkq7BMXLkSMLCwliwYAGnTp1i5syZrFu3TjfRukWLFvj4+NClSxd27NjBuXPn+Pnnn9m6detj18/FxYUVK1YQHx/P/v37efvttx+rB+RxmJmZ0atXLw4fPszevXsJDg6mW7duj5xPYWpqSqlSpfQ2IxOTIqmLEEIIIYR4ci9No2LEiBEYGhri4eFB2bJlyczMJCIigpiYGLy8vBg0aBB9+/Zl3Lhxj8wkJSVRuXJlwsPD2bBhA15eXixcuJBp06YVSR2XL1+Ovb09Pj4+BAQE0L9/f6ytrTEzM9OVCQ0NZceOHTg6OlKnTh0AXn/9debMmcOMGTOoUaMGixYtYunSpfj6+upy4eHhNGjQgB49euDh4cGoUaPy9HgUZMmSJVy/fp26devSs2dPgoODKVeuXJFct7OzM507d6ZDhw68+uqr1KpVi6+++qpIji2EEEIIkR+5o3bR0uSW1MVyS4ALFy7g6OjIzp07ad26dXFX55mYNGkSGzZsIC4uTuk4E7edUMp3nKW2hG3t75Yr5W+ZllbKW0QtVcprjIwLL1SAxDpvKuWrHtuglM9o/IZSPu5SmlI+8cYdpXzNKe8q5WvN+UIpn3PpnFJ+XoZn4YUKEFTTUikfXLqxUn7uL58p5dPi/6eUt/brrpT/09Kp8EIF6PtdbOGFCrD9ba1S3rhsZaX83a1qc+oMLEsp5Y0qOivlM+3zH+r7uCLOpSrl72Q+/heM+Sllpvb/Ryd3e6W8iqspan/7VZQtZVFs535WXoolZV8Uu3fvJjU1FU9PT5KTkxk1ahRarRYfH5/irpoQQgghRIki36sXLWlUPEcyMzP56KOPOHv2LNbW1jRp0oSVK1fmWZlJCCGEEEKI54k0Kp4jfn5+upvEvSwmTZrEpEmTirsaQgghhBBCgTQqRIlgaKApvFAB3NdtUcqfTslUytubKsVJathTKZ+arna/lOsp6Ur5C47tlfJnjlwpvFABrqep3TwxI0vt9Wv2TbhS/kePRoUXKkDPimpzEsZNd1fK15l6QCkfqzgnIthnjFJ+eeP/U8qvaaY2ptz0rtqcHkMjtTVbvj2rNoRkYFmluPKcrorWaqMBNpy+XnihAlhnqI3rd31FbU7SsatqczKOXkopvFABinNOxbO/U9jL5aVZ/akgvr6+DB069KnzkZGRaDQabty4UWR1+i+FhYVha2tb3NUQQgghhBAvKOmpANatW/fCzFvQaDSsX7+e119/vbirIoQQQgjxwpJ52kVLGhVA6dJqy3kKIYQQQgjxMnuuhj/5+voyZMgQhg4dip2dHfb29ixevJjbt2/Tp08frK2tcXZ25ueffwYgOzubvn37UrVqVczNzXFzc2POnDl6x8zKyiI4OBhbW1teeeUVRo8eTa9evfS+6X94+FN6ejqjR4/G0dERU1NTnJ2dWbJkie75iIgIXF1dMTc3p2XLliQmJuqd8/5wos2bN+Pm5oaFhQVdu3YlLS2NZcuWodVqsbOzIzg4WO8GdMnJyXTs2BFzc3OqVq3KqlWr0Gq1zJ49G7h3N22AgIAANBqN7jHAggULqFatGiYmJri5ubFixQq9Ot24cYOBAwdib2+PmZkZNWvWZPPmzXpltm3bhru7O1ZWVrRr147k5GTdcwcOHKBt27aUKVMGGxsbWrRowaFDh/TyGo2GRYsW0alTJywsLHB3d+f333/n9OnT+Pr6YmlpSZMmTThz5owuM2nSJGrXrs2iRYtwdHTEwsKCbt26cfPmTYQQQgghnhW5+V3Req4aFQDLli2jTJkyxMTEMGTIEN577z3eeOMNmjRpwqFDh3j11Vfp2bMnaWlp5OTkUKlSJX744QeOHz/OhAkT+Oijj1i7dq3ueJ9//jkrV65k6dKlREdHk5KSwoYNGwqsQ2BgIKtXr2bu3LnEx8ezaNEirKysADh//jydO3fG39+fuLg4+vXrx5gxeSf5paWlMXfuXNasWcPWrVuJjIwkICCAiIgIIiIiWLFiBYsWLeLHH3/UO+/FixeJjIwkPDycr7/+mitX/p2AeuDAvcmMS5cuJTk5Wfd4/fr1fPDBB3z44YccPXqUgQMH0qdPH/bs2QNATk4O7du3Jzo6mu+++47jx4/z2WefYWhoqFffGTNmsGLFCn755ReSkpIYMWKE7vlbt27Rq1cvfv31V/bt24eLiwsdOnTg1q1betc9depUAgMDiYuLo3r16rz11lsMHDiQsWPHcvDgQXJzcwkKCtLLnD59mrVr1/LTTz+xdetWYmNjGTxY7WZ0QgghhBDiv/PcDX/y8vJi3LhxAIwdO5bPPvuMMmXK0L9/fwAmTJjAggUL+N///kfjxo2ZPHmyLlu1alV+//131q5dS7du3QCYN28eY8eOJSAgAID58+cTERHxyPOfPHmStWvXsmPHDtq0aQOAk9O/dyu93yMQGhoKgJubG0eOHOHzzz/XO05mZqauLEDXrl1ZsWIFly9fxsrKCg8PD1q2bMmePXvo3r07J06cYOfOnRw4cID69esD8M033+Di4qI7Ztmy95bIsLW1xcHBQbd/xowZ9O7dW/dBfPjw4ezbt48ZM2bQsmVLdu7cSUxMDPHx8bi6uua5pvv1Xbhwoa6+QUFBTJkyRfd8q1at9Mp//fXX2NraEhUVRadOnXT7+/Tpo3vtR48ejbe3N+PHj9ctlfvBBx/Qp08fvWPdvXuX5cuXU7FiReDee9axY0dCQ0P1rlMIIYQQQjyfnrueilq1aun+bWhoyCuvvIKnp6dun739vaXH7n+D/+WXX1KvXj3Kli2LlZUVX3/9NUlJSQDcvHmTy5cv07BhQ71j1qtX75Hnj4uLw9DQkBYtWuT7fHx8PI0a6S/f6O3tnaechYWF7gP6/XprtVpdj8f9ffevIyEhASMjI+rWrat73tnZGTs7u0fW9cE6NW3aVG9f06ZNiY+P111TpUqVdA2K/Dxc3/Lly+v1kly+fJn+/fvj4uKCjY0NpUqVIjU1Vfda3/fg+3f/vXr4/bt79y4pKf8uQVe5cmVdgwLuvZ45OTkkJCTkW9f09HRSUlL0tqwMtSVBhRBCCPFyyc3NLbatJHruGhUPr8Kk0Wj09mk09+5HkJOTw5o1axgxYgR9+/Zl+/btxMXF0adPHzIUPmCam5s/dfZBhV3H/X05Oc9+leTHuab86vbgD32vXr2Ii4tjzpw5/Pbbb8TFxfHKK6/kea3ze68e9f49rZCQEGxsbPS2vWsWPfXxhBBCCCGEmueuUfEkoqOjadKkCYMHD6ZOnTo4OzvrTQK2sbHB3t5eN/cA7k3ufniC8YM8PT3JyckhKioq3+fd3d2JiYnR27dv3z7FK7k3jCorK4vY2FjdvtOnT3P9uv5NdYyNjfUmd9+vU3R0tN6+6OhoPDw8gHu9BxcuXODkyZNPXb/o6GiCg4Pp0KEDNWrUwNTUlGvXrj318R6UlJTExYsXdY/37duHgYEBbm5u+ZYfO3YsN2/e1NuavzmwSOoihBBCiJdDTjFuJdEL3ahwcXHh4MGDbNu2jZMnTzJ+/Hi9BgTAkCFDCAkJYePGjSQkJPDBBx9w/fp13TfmD9NqtfTq1Yt3332XDRs2cO7cOSIjI3WTvwcNGsSpU6cYOXIkCQkJrFq1irCwMOVrqV69Om3atGHAgAHExMQQGxvLgAEDMDc316urVqtl165dXLp0SdfgGDlyJGFhYSxYsIBTp04xc+ZM1q1bp5to3aJFC3x8fOjSpQs7duzg3Llz/Pzzz2zduvWx6+fi4sKKFSuIj49n//79vP3220XWq2NmZkavXr04fPgwe/fuJTg4mG7duj1yPoWpqSmlSpXS24xMTIqkLkIIIYQQ4sm90I2KgQMH0rlzZ7p3706jRo34+++/86waNHr0aHr06EFgYCDe3t5YWVnh5+eHmZnZI4+7YMECunbtyuDBg6levTr9+/fn9u3bwL3x/+Hh4WzYsAEvLy8WLlzItGnTiuR6li9fjr29PT4+PgQEBNC/f3+sra316hoaGsqOHTtwdHSkTp06ALz++uvMmTOHGTNmUKNGDRYtWsTSpUvx9fXV5cLDw2nQoAE9evTAw8ODUaNG5enxKMiSJUu4fv06devWpWfPngQHB1OuXLkiuW5nZ2c6d+5Mhw4dePXVV6lVqxZfffVVkRxbCCGEEEI8e5rckjpb5BFycnJwd3enW7duTJ06tbirU6ALFy7g6OjIzp07ad26dXFX55mYNGkSGzZsIC4uTuk4U3bkP6n7cQ1rWlkpfz4lUylvb6m2ENu1O1lK+dR0tc7Y63fVrl/VmX/SlPLX09Qm+mdkqb1+PetUUMrHeDQqvFBB56/YWCk/bvpopfz3Pz/90EyA2IDbSvlgn7zLgj+J5Y3/Tym/ZslHSnlTQ7XvB7/Yofb6v9HAUSk/sFEVpfyJyymFFypARWvjwgsV4OfT1wsvVABrE8PCCxWgso3aqIFjV1OV8mf/Vvv9G9PSpfBCz8iff6tdu4oqr1gVXugF89wtKVvU/vzzT7Zv306LFi1IT09n/vz5nDt3jrfeequ4q5bH7t27SU1NxdPTk+TkZEaNGoVWq8XHx6e4qyaEEEIIIcQjlfhGhYGBAWFhYYwYMYLc3Fxq1qzJzp07cXd3L+6q5ZGZmclHH33E2bNnsba2pkmTJqxcuTLPykxCCCGEEEJNzss1WOeZK/GNCkdHxzwrIz2v/Pz8dDeJe1lMmjSJSZMmFXc1hBBCCCGEghLfqBAvh+wctW8bjLYvVMqbN+unlF999LJSfpCj2pwCTVa6Un5Tenml/Gtmfyrl63jUKrxQAY5fvaOUT7yhlrf94VOlfL/qHZTyXx/bopRPyHj8RR/yE9PgsFI+LV7t5191TkTgvk1K+doOaot9xF1SGxdeo6KNUr5PNbU5Aaqcc9T+fqbmVCy8UAECHNTmZF0xLquUH/nTcaW8U1m1sf2NtaWV8sVJ+imK1gu9+lN+tFots2fP/k/P6evry9ChQ//Tcxal4njNhBBCCCFEyVHiGhUl2aRJk6hdu3ZxV0MIIYQQQgg9MvxJCCGEEEK8dBRHTouHvHA9Fb6+vgQFBREUFISNjQ1lypRh/PjxPHi7jbS0NN59912sra2pXLkyX3/9te65Vq1aERQUpHfMq1evYmJiwq5duwD46quvcHFxwczMDHt7e7p27aore/v2bQIDA7GysqJ8+fKEhobmqaNWq+WTTz7RlatSpQqbNm3i6tWrvPbaa1hZWVGrVi0OHjyol1u8eDGOjo5YWFgQEBDAzJkzsbW1BSAsLIzJkydz+PBhNBoNGo1GdyfvpKQk3XFLlSpFt27duHxZf4zpTz/9RIMGDTAzM6NMmTIEBAToPV/Qawb3biLo6uqKhYUFTk5OjB8/nszMf+9NcL8X5dtvv6Vy5cpYWVkxePBgsrOzmT59Og4ODpQrV45PP9UfO67RaFiwYAHt27fH3NwcJycnfvzxxzyvqRBCCCHEy+zLL79Eq9ViZmZGo0aNiImJeWTZxYsX07x5c+zs7LCzs6NNmzYFli8KL1yjAmDZsmUYGRkRExPDnDlzmDlzJt98843u+dDQUOrXr09sbCyDBw/mvffeIyHh3s3R+vXrx6pVq0hP/3di6nfffUfFihVp1aoVBw8eJDg4mClTppCQkMDWrVv17hMxcuRIoqKi2LhxI9u3bycyMpJDhw7lqeOsWbNo2rQpsbGxdOzYkZ49exIYGMg777zDoUOHqFatGoGBgbrGUHR0NIMGDeKDDz4gLi6Otm3b6n0A7969Ox9++CE1atQgOTmZ5ORkunfvTk5ODq+99hr//PMPUVFR7Nixg7Nnz9K9e3dddsuWLQQEBNChQwdiY2PZtWsXDRs21KtvQa8ZgLW1NWFhYRw/fpw5c+awePFiZs2apXeMM2fO8PPPP7N161ZWr17NkiVL6NixIxcuXCAqKorPP/+ccePGsX//fr3c+PHj6dKlC4cPH+btt9/mzTffJD4+vvAfBCGEEEKIp5SbW3zbk/r+++8ZPnw4EydO5NChQ3h5eeHn58eVK1fyLR8ZGUmPHj3Ys2cPv//+O46Ojrz66qv89ddfiq/ao72QjQpHR0dmzZqFm5sbb7/9NkOGDNH7gNuhQwcGDx6Ms7Mzo0ePpkyZMuzZsweAzp07A7Bx40Zd+bCwMHr37o1GoyEpKQlLS0s6depElSpVqFOnDsHBwQCkpqayZMkSZsyYQevWrfH09GTZsmVkZeW9m3GHDh0YOHAgLi4uTJgwgZSUFBo0aMAbb7yBq6sro0ePJj4+XtejMG/ePNq3b8+IESNwdXVl8ODBtG/fXnc8c3NzrKysMDIywsHBAQcHB8zNzdm1axdHjhxh1apV1KtXj0aNGrF8+XKioqI4cOAAAJ9++ilvvvkmkydPxt3dHS8vL8aOHZunvo96zQDGjRtHkyZN0Gq1+Pv7M2LECNauXat3jJycHL799ls8PDzw9/enZcuWJCQkMHv2bNzc3OjTpw9ubm56xwV444036NevH66urkydOpX69eszb968x/xpEEIIIYQo2WbOnEn//v3p06cPHh4eLFy4EAsLC7799tt8y69cuZLBgwdTu3ZtqlevzjfffENOTo5uVM6z8EI2Kho3boxGo9E99vb25tSpU2Rn31vWsFatf5eX1Gg0ODg46FpyZmZm9OzZU/cmHDp0iKNHj9K7d28A2rZtS5UqVXBycqJnz56sXLmStLR7yxWeOXOGjIwMGjVqpDt+6dKlcXNzy1PHB+tgb28PgKenZ5599+uVkJCQp/fg4cf5iY+Px9HREUdHR90+Dw8PbG1tdd/2x8XF0bp16wKPU9BrBvdayE2bNsXBwQErKyvGjRtHUlKS3jG0Wi3W1tZ61+jh4YGBgYHevodb1d7e3nkeF9RTkZ6eTkpKit6WlaG2pJ8QQgghxH8lv88yD46ieVBGRgZ//PEHbdq00e0zMDCgTZs2/P777491vrS0NDIzMyld+tktAfxCNioK8/AdqDUaDTk5ObrH/fr1Y8eOHVy4cIGlS5fSqlUrqlSpAtwb5nPo0CFWr15N+fLlmTBhAl5eXty4ceOp63C/AZTfvgfr9ayYm5sXWqag1+z333/n7bffpkOHDmzevJnY2Fg+/vhjMh76IJ/fMQp7L55GSEgINjY2etuv339deFAIIYQQ4v/LIbfYtvw+y4SEhORbz2vXrpGdna37Qvo+e3t7Ll269FjXOnr0aCpUqKDXMClqL2Sj4uEx+fv27cPFxQVDw8e7AY+npyf169dn8eLFrFq1infffVfveSMjI9q0acP06dP53//+R2JiIrt376ZatWoYGxvrnf/69eucPHlS+Zrc3Nx0w5Xue/ixiYmJrjfmPnd3d86fP8/58+d1+44fP86NGzfw8PAA7vVCqHR3/fbbb1SpUoWPP/6Y+vXr4+Liwp9/qt2s7EH79u3L89jd3f2R5ceOHcvNmzf1tmbdBxRZfYQQQgghnqX8Pss8PDS9qHz22WesWbOG9evXY2Zm9kzOAS/okrJJSUkMHz6cgQMHcujQIebNm5fvKkwF6devH0FBQVhaWuqthLR582bOnj2Lj48PdnZ2REREkJOTg5ubG1ZWVvTt25eRI0fyyiuvUK5cOT7++GO94T1Pa8iQIfj4+DBz5kz8/f3ZvXs3P//8s94wL61Wy7lz54iLi6NSpUpYW1vTpk0bPD09efvtt5k9ezZZWVkMHjyYFi1aUL9+fQAmTpxI69atqVatGm+++SZZWVlEREQwevTox6qbi4sLSUlJrFmzhgYNGrBlyxbWr1+vfM33/fDDD9SvX59mzZqxcuVKYmJiWLJkySPLm5qaYmpqqrfPyMSkyOojhBBCiJLvaSZMF5X8Pss8SpkyZTA0NMyzsufly5dxcHAoMDtjxgw+++wzdu7cqTfU/Vl4IXsqAgMDuXPnDg0bNuT999/ngw8+YMCAJ/umukePHhgZGdGjRw+9VputrS3r1q2jVatWuLu7s3DhQlavXk2NGjUA+OKLL2jevDn+/v60adOGZs2aUa9ePeVratq0KQsXLmTmzJl4eXmxdetWhg0bple3Ll260K5dO1q2bEnZsmVZvXo1Go2GjRs3Ymdnh4+PD23atMHJyYnvv/9el/P19eWHH35g06ZN1K5dm1atWj3RsmL/93//x7BhwwgKCqJ27dr89ttvjB8/Xvma75s8eTJr1qyhVq1aLF++nNWrV+t6WYQQQgghXmYmJibUq1dPb9TJ/UnXD89LfdD06dOZOnUqW7du1X3R/CxpcnOLs5325Hx9falduzazZ89WOk5iYiLVqlXjwIED1K1bt2gqV8T69+/PiRMn2Lt3b3FX5ZnRaDSsX7+e119/Xek4E7edUMqPufOzUv5Ss35K+S2nrinlBzmmKeU1mflPDntcm26XV8q/ZqY2nO66vdq3L8ev3lHKJ95Qy3faP18pX3l13hXonsS8Y1uU8gnLw5Xy41LWKeUzb6n9/FdYmqqUD9y3SSn/0d9HlfJxl9TqvyvhqlL+i+Z2SnmTMpWU8lnJp5TyqdYVlfKWafkv6fm4rhiXVcqP/Om4Ut6prJVSvrFWbeJvJ3f7wgs9I8cvpRTbuT0cSj1R+e+//55evXqxaNEiGjZsyOzZs1m7di0nTpzA3t6ewMBAKlasqJuX8fnnnzNhwgRWrVpF06ZNdcexsrLCykrtPX+UF3L4k4rMzEz+/vtvxo0bR+PGjZ+rBsWMGTNo27YtlpaW/PzzzyxbtoyvvvqquKslhBBCCCGKUffu3bl69SoTJkzg0qVL1K5dm61bt+ombyclJekNx1+wYAEZGRl6N3CGe0PiJ02a9Ezq+NI1KqKjo2nZsiWurq7P3Z2bY2JimD59Ordu3cLJyYm5c+fSr5/aN+BCCCGEEOLFFxQURFBQUL7PRUZG6j1OTEx89hV6yAvXqHj4RXtSvr6+PK8jvh6+mdzL4Hl9L4QQQghRsslHkKL1wjUqhMiPoYGm8EIF5X26K+VT09XuvVHNzkIpf9WqnFLeUO3lI/PWTaX8tbKehRcqwPkbajc/vHJbbU5JaobanAbLt0Yo5Zc0Vbv+RhUnKeXbKP78/HKlv1L+VfPHW6f9UdY0UxvTXdthmlJ+2is1lfKjrh5Rysf9pfb7+/tNtSUqW5RRipNtrfb3L0fxg2W6ldrPz9+Kf786earNaTNQ/P/z0q27SnlRcryQqz89byIjI9FoNE98g7znRVhYGLa2tsVdDSGEEEKI/0xx3vyuJCoRjQpfX1+GDh1a3NX4T2g0GjZs2FDc1RBCCCGEEEKnRDQqCpObm0tWltrwBCGEEEIIIUT+XvhGRe/evYmKimLOnDloNBo0Gg1hYWFoNBp+/vln6tWrh6mpKb/++iu9e/fOcz+EoUOH4uvrq3uck5NDSEgIVatWxdzcHC8vrzyrREVERODq6oq5uTktW7bMM8P+/nCizZs34+bmhoWFBV27diUtLY1ly5ah1Wqxs7MjODiY7OxsXS45OZmOHTtibm5O1apVWbVqFVqtVndPDq1WC0BAQAAajUb3GO4tHVatWjVMTExwc3NjxYoVenW6ceMGAwcOxN7eHjMzM2rWrMnmzZv1ymzbtg13d3esrKxo164dycnJuucOHDhA27ZtKVOmDDY2NrRo0YJDhw7p5TUaDYsWLaJTp05YWFjg7u7O77//zunTp/H19cXS0pImTZpw5swZXWbSpEnUrl2bRYsW4ejoiIWFBd26dePmTbUxvkIIIYQQBcnNLb6tJHrhGxVz5szB29ub/v37k5ycTHJyMo6OjgCMGTOGzz77jPj4+Me+NXlISAjLly9n4cKFHDt2jGHDhvHOO+8QFRUFwPnz5+ncuTP+/v7ExcXRr18/xowZk+c4aWlpzJ07lzVr1rB161YiIyMJCAggIiKCiIgIVqxYwaJFi/QaLIGBgVy8eJHIyEjCw8P5+uuvuXLl35vqHDhwAIClS5eSnJyse7x+/Xo++OADPvzwQ44ePcrAgQPp06cPe/bsAe41lNq3b090dDTfffcdx48f57PPPsPQ0FCvvjNmzGDFihX88ssvJCUlMWLEv5NHb926Ra9evfj111/Zt28fLi4udOjQgVu3buld99SpUwkMDCQuLo7q1avz1ltvMXDgQMaOHcvBgwfJzc3Nsxza6dOnWbt2LT/99BNbt24lNjaWwYMHP9b7JYQQQgghit8Lv/qTjY0NJiYmWFhY4ODgAMCJE/furjxlyhTatm372MdKT09n2rRp7Ny5U3fbcycnJ3799VcWLVpEixYtdD0CoaGhALi5uXHkyBE+//xzvWNlZmbqygJ07dqVFStWcPnyZaysrPDw8KBly5bs2bOH7t27c+LECXbu3MmBAwd0t1L/5ptvcHFx0R2zbNl7d920tbXVXSvcu2le7969dR/Ehw8fzr59+5gxYwYtW7Zk586dxMTEEB8fj6urq+66Hq7vwoULdfUNCgpiypQpuudbtWqlV/7rr7/G1taWqKgoOnXqpNvfp08funXrBsDo0aPx9vZm/Pjx+Pn5AfDBBx/Qp08fvWPdvXuX5cuXU7Hivbuazps3j44dOxIaGqp3nUIIIYQQRSWnpHYZFJMXvqeiIPc/nD+u06dPk5aWRtu2bXW3MbeysmL58uW6ITvx8fE0atRIL3e/AfIgCwsL3Qd0AHt7e7Rard6t0e3t7XU9EQkJCRgZGend4dvZ2Rk7O7tC6x0fH693C3aApk2bEh8fD0BcXByVKlXSNSjy83B9y5cvr9dLcvnyZfr374+Liws2NjaUKlWK1NRUkpKS9I7zYI/Q/bs8enp66u27e/cuKSkpun2VK1fWNSjg3uuZk5NDQkJCvnVNT08nJSVFb8vKUFuSTwghhBBCPL0XvqeiIJaWlnqPDQwM8txsLTMzU/fv1NRUALZs2aL3IRfA1NT0ic5tbGys91ij0eS7LydH7f4Gj8Pc3LzQMvnV7cHXqlevXvz999/MmTOHKlWqYGpqire3NxkPfZh/8DgajeaR+1SuOyQkhMmTJ+vt833nfVoGDnnqYwohhBDi5ZL97D+CvVRKRE+FiYmJ3oTnRylbtqze5GO49y3+fR4eHpiampKUlISzs7Pedn+ehru7OzExMXrH2Ldvn/I1uLm5kZWVRWxsrG7f6dOnuX79ul45Y2PjPNfq7u5OdHS03r7o6Gg8PDyAe70HFy5c4OTJk09dv+joaIKDg+nQoQM1atTA1NSUa9euPfXxHpSUlMTFixd1j/ft24eBgQFubm75lh87diw3b97U25q/ObBI6iKEEEIIIZ5cieip0Gq17N+/n8TERKysrB75LXirVq344osvWL58Od7e3nz33XccPXqUOnXqAGBtbc2IESMYNmwYOTk5NGvWjJs3bxIdHU2pUqXo1asXgwYNIjQ0lJEjR9KvXz/++OMPwsLClK+hevXqtGnThgEDBrBgwQKMjY358MMPMTc31327f/9ad+3aRdOmTTE1NcXOzo6RI0fSrVs36tSpQ5s2bfjpp59Yt24dO3fuBKBFixb4+PjQpUsXZs6cibOzMydOnECj0dCuXbvHqp+LiwsrVqygfv36pKSkMHLkyMfqAXkcZmZm9OrVixkzZpCSkkJwcDDdunV75HwKU1PTPD1HRiYmRVIXIYQQQgjx5EpET8WIESMwNDTEw8ODsmXL5hnnf5+fnx/jx49n1KhRNGjQgFu3bhEYGKhXZurUqYwfP56QkBDc3d1p164dW7ZsoWrVqsC98f/h4eFs2LABLy8vFi5cyLRp04rkOpYvX469vT0+Pj4EBATQv39/rK2tMTMz05UJDQ1lx44dODo66hpDr7/+OnPmzGHGjBnUqFGDRYsWsXTpUr2lcsPDw2nQoAE9evTAw8ODUaNGPVbvzn1Llizh+vXr1K1bl549exIcHEy5cuWK5LqdnZ3p3LkzHTp04NVXX6VWrVp89dVXRXJsIYQQQoj85OTmFttWEmlyH55kIJ4bFy5cwNHRkZ07d9K6devirs4zMWnSJDZs2KA3DO1pTNmR/6TuxzWmnrVSPiHdsvBCBbhw865SvraDVeGFCmCoKbxMQSL/VLuviG8VG6X8+ZTMwgsVIPFGmlL+ym21hQL6uqu9fxv+VDt/o4qllPKqPz9HrtxWyr9qfkkpv+W2vVJe9fdv2is1lfKjrh5Ryn8Xe7HwQgVo4fSKWr5aGaV8eqra35/bucaFFyqAieIvwNkbar+/Ry/fKrxQAQwM1Oqfmq52c+F+Daso5VUcSLpeeKFnpEHlwhfiedGUiOFPJcXu3btJTU3F09OT5ORkRo0ahVarxcfHp7irJoQQQghRomTL9+pFShoVz5HMzEw++ugjzp49i7W1NU2aNGHlypV5VmYSQgghhBDieSKNiueIn5+f7iZxL4tJkyYxadKk4q6GEEIIIYRQII0KISj+ORGt7dW6YPdcVhuTrjpprJa92phy1TkZ1++ozalIuauWz8hSW+w83Vjt56+qraFS/sptteu/q3j9Z66rzWn5s4yTUt707h2lfNylVKW86pyI6WU9Cy9UgKGX/qeU33n2b6W86pyKjHWzlPI2LQKU8ukx25Ty1V99VylfzkltbH5aptrvb/ixy0r54lRSJ0wXlxKx+pP4b0RGRqLRaLhx48YzPU9YWBi2trbP9BxCCCGEEKLoSKPiJeDr68vQoUOfeUYIIYQQ4kWRnVN8W0kkjQohhBBCCCGEEmlUlHC9e/cmKiqKOXPmoNFo0Gg0JCYmEhUVRcOGDTE1NaV8+fKMGTOGrKysAjP3/fHHH9SvXx8LCwuaNGlCQoL+PSI2btxI3bp1MTMzw8nJicmTJ+uODTBz5kw8PT2xtLTE0dGRwYMHk5qqNiZZCCGEEEIUH2lUlHBz5szB29ub/v37k5ycTHJyMsbGxnTo0IEGDRpw+PBhFixYwJIlS/jkk08emXF0dNQd8+OPPyY0NJSDBw9iZGTEu+/+O8ls7969BAYG8sEHH3D8+HEWLVpEWFgYn376qa6MgYEBc+fO5dixYyxbtozdu3czatSo/+5FEUIIIcRLT+6oXbRk9acSzsbGBhMTEywsLHBwcADuNQocHR2ZP38+Go2G6tWrc/HiRUaPHs2ECRPyzTzo008/pUWLFgCMGTOGjh07cvfuXczMzJg8eTJjxoyhV69eADg5OTF16lRGjRrFxIkTAfTmami1Wj755BMGDRrEV1999YxfDSGEEEII8SxIo+IlFB8fj7e3NxqNRrevadOmpKamcuHCBSpXrlxgvlatWrp/ly9fHoArV65QuXJlDh8+THR0tF7PRHZ2Nnfv3iUtLQ0LCwt27txJSEgIJ06cICUlhaysLL3nC5Oenk56errevqyMDIxMTB7r+oUQQggh5I7aRUuGP4kn9uAdvu83THJy7i1lkJqayuTJk4mLi9NtR44c4dSpU5iZmZGYmEinTp2oVasW4eHh/PHHH3z55ZcAZGRkPNb5Q0JCsLGx0dv2rllUxFcphBBCCCEel/RUvARMTEzIzs7WPXZ3dyc8PJzc3FxdoyA6Ohpra2sqVaqUb+Zx1a1bl4SEBJydnfN9/o8//iAnJ4fQ0FAMDO61adeuXftE5xg7dizDhw/X2zdj759PXFchhBBCvLxypKOiSEmj4iWg1WrZv38/iYmJWFlZMXjwYGbPns2QIUMICgoiISGBiRMnMnz4cN0H/YczpUuXfqxzTZgwgU6dOlG5cmW6du2KgYEBhw8f5ujRo3zyySc4OzuTmZnJvHnz8Pf3Jzo6moULFz7R9ZiammJqaqq3T4Y+CSGEEEIUHxn+9BIYMWIEhoaGeHh4ULZsWTIzM4mIiCAmJgYvLy8GDRpE3759GTdu3CMzSUlJj3UuPz8/Nm/ezPbt22nQoAGNGzdm1qxZVKlSBQAvLy9mzpzJ559/Ts2aNVm5ciUhISHP5LqFEEIIIcR/Q3oqXgKurq78/vvvevu0Wi0xMTFPnMl9aFJT7dq18+zz8/PDz8/vkcceNmwYw4YN09vXs2dP3b979+5N7969H5kXQgghhFCVLeOfipT0VAghhBBCCCGUSE+FEEIIIYR46ZTUm9AVF+mpEEIIIYQQQiiRngohgD4L9ynlOzapopRvXcZKKT/h+3ilvJWtmVI+qFX+Swg/ru8PnlfKV7Ir/KaJBbE2U/tTaGigKbxQAZp/skcpn5ujFMehso1Sfqji+686rrnvd7FKeUMjte/XalRUe/3i/rqplB966X9K+dkOtQovVACjHzcp5VWNteyslK901lwpfyy9lVK+9O5kpfz01hWV8oYman//TyTfUsqLkkN6Kl4Avr6+DB069KnzkZGRaDQabty4UWR1yk9YWBi2trbKx9FoNGzYsEH5OEIIIYQQj5KdW3xbSSSNinw8zYd41Q/+BVm3bh1Tp07VPdZqtcyePfuZnEsIIYQQQognJcOfXgCPe+M5IYQQQgjxeGSidtGSnoqH9O7dm6ioKObMmYNGo0Gj0ZCYmEhUVBQNGzbE1NSU8uXLM2bMGLKysgrM5DccaMOGDWg0/46/njRpErVr12bFihVotVpsbGx48803uXXr3zGKD/aC+Pr68ueffzJs2DDduQD+/PNP/P39sbOzw9LSkho1ahAREaF37j/++IP69etjYWFBkyZNSEhI0Ht+48aN1K1bFzMzM5ycnJg8ebLuGgFmzpyJp6cnlpaWODo6MnjwYFJTUwt8PQs75qlTp/Dx8cHMzAwPDw927NhRyDskhBBCCCGeN9KoeMicOXPw9vamf//+JCcnk5ycjLGxMR06dKBBgwYcPnyYBQsWsGTJEj755JNHZhwdHR/7nGfOnGHDhg1s3ryZzZs3ExUVxWeffZZv2XXr1lGpUiWmTJmiOxfA+++/T3p6Or/88gtHjhzh888/x8pKf/Lvxx9/TGhoKAcPHsTIyIh3331X99zevXsJDAzkgw8+4Pjx4yxatIiwsDA+/fRTXRkDAwPmzp3LsWPHWLZsGbt372bUqFGPvK7CjpmTk0Pnzp0xMTFh//79LFy4kNGjRz/26yaEEEII8bSyc3KLbSuJZPjTQ2xsbDAxMcHCwgIHBwfg3odxR0dH5s+fj0ajoXr16ly8eJHRo0czYcKEfDNPIicnh7CwMKytrYF7d5fetWuX3gf6+0qXLo2hoSHW1tZ650pKSqJLly54enoC4OTklCf76aef0qJFCwDGjBlDx44duXv3LmZmZkyePJkxY8bQq1cvXX7q1KmMGjWKiRMnAujNGdFqtXzyyScMGjSIr776Kt/rKuyYO3fu5MSJE2zbto0KFSoAMG3aNNq3b/9Er58QQgghhChe0qh4DPHx8Xh7e+sNW2ratCmpqalcuHCBypUrKx1fq9XqGhQA5cuX58qVK090jODgYN577z22b99OmzZt6NKlC7Vq6S8T+ODj8uXLA3DlyhUqV67M4cOHiY6O1mvIZGdnc/fuXdLS0rCwsGDnzp2EhIRw4sQJUlJSyMrK0nv+YYUdMz4+HkdHR12DAsDb27vQa01PTyc9PV1vX1ZGBkYmJoVmhRBCCCFE0ZPhT8+QgYEBuQ9NAsrMzMxTztjYWO+xRqMhJ+fJFp7v168fZ8+epWfPnhw5coT69eszb968R57nfgPp/nlSU1OZPHkycXFxuu3IkSOcOnUKMzMzEhMT6dSpE7Vq1SI8PJw//viDL7/8EoCMjIx861TYMZ9WSEgINjY2etveNYue+nhCCCGEePnk5OYW21YSSU9FPkxMTMjOztY9dnd3Jzw8nNzcXN2H8ejoaKytralUqVK+GYCyZcty69Ytbt++jaWlJQBxcXFFXr/7HB0dGTRoEIMGDWLs2LEsXryYIUOGPNYx69atS0JCAs7O+d/E6o8//iAnJ4fQ0FAMDO61RdeuXat0THd3d86fP09ycrKu52TfvsJvQjd27FiGDx+ut2/G3j8LzQkhhBBCiGdDGhX50Gq17N+/n8TERKysrBg8eDCzZ89myJAhBAUFkZCQwMSJExk+fLjuA/bDmdKlS9OoUSMsLCz46KOPCA4OZv/+/YSFhRVJ/X755RfefPNNTE1NKVOmDEOHDqV9+/a4urpy/fp19uzZg7u7+2Mfc8KECXTq1InKlSvTtWtXDAwMOHz4MEePHuWTTz7B2dmZzMxM5s2bh7+/P9HR0SxcuFDpmG3atMHV1ZVevXrxxRdfkJKSwscff1xoXU1NTTE1NdXbJ0OfhBBCCPEkSupN6IqLDH/Kx4gRIzA0NMTDw4OyZcuSmZlJREQEMTExeHl5MWjQIPr27cu4ceMemUlKSqJ06dJ89913RERE4OnpyerVq5k0aZJy/aZMmUJiYiLVqlWjbNmywL25Cu+//z7u7u60a9cOV1fXR06gzo+fnx+bN29m+/btNGjQgMaNGzNr1iyqVKkCgJeXFzNnzuTzzz+nZs2arFy5kpCQEKVjGhgYsH79eu7cuUPDhg3p169fvpPThRBCCCHE802T+/CgfyFeQFN2JBReqACbfk1UyndsUkUp/3E9q8ILFaD5V/FKeSvbp5/jAhDUKv8hbo/ru5gkpXwlu7wLBTwJazO1TltDA03hhQqwMeqsUj73yaZg5eFQ2UYpP1Tx/T/5922l/IYDF5TyhkZq36/VqKj2+r1ipdbT2q1WeaX8bIdahRcqgNGPm5Ty87uonT8o/H9K+UqlzZXyx/66qZQvbWlaeKECTG9dUSmfgtrf/zERav//LnmzjlJexdr/XSy2c3erVaHwQi8YGf4khBBCCCFeOiV1wnRxkeFPQgghhBBCCCXSUyGEEEIIIV46OSX0ztbFRRoVokRQveX97++pjQnvtf0fpfx3iWpzAn59z00pn235itr5/0pTyn/3lpdS/tyN/O+V8rgSrqmN6f87Te38B4OqKeVXJqv9/LxVWe33Z/bxW0r5oEaVlPKDXdX+K/v2rNr196lmqJT//abamPadZ/9WyqvOicjq+n9KeXITleI+LmWU8ulZapOSKtuqzclQXYFocITakupWpmq/P23dyynlRckhw5+KmK+vL0OHDi3uagghhBBCiAJk5xbfVhJJo+IFNGnSJGrXrv2f5YqaNLyEEEIIIUoWaVSIJ5abm0tWVlae/RkZakNAhBBCCCHEi0kaFQpu375NYGAgVlZWlC9fntDQUL3ntVotn3zyia5MlSpV2LRpE1evXuW1117DysqKWrVqcfDgQb3c4sWLcXR0xMLCgoCAAGbOnImtrS0AYWFhTJ48mcOHD6PRaNBoNLq7dCclJemOW6pUKbp168bly5cLzCUmJqLRaIiLi9Od/8aNG2g0GiIjIwGIjIxEo9Hw888/U69ePUxNTfn111/x9fUlKCiIoUOHUqZMGfz8/AA4evQo7du3x8rKCnt7e3r27Mm1a9cA6N27N1FRUcyZM0dXj8TERK5fv87bb79N2bJlMTc3x8XFhaVLlxbxOyaEEEIIcU9Obm6xbSWRNCoUjBw5kqioKDZu3Mj27duJjIzk0KFDemVmzZpF06ZNiY2NpWPHjvTs2ZPAwEDeeecdDh06RLVq1QgMDOT+PQijo6MZNGgQH3zwAXFxcbRt21bvLtPdu3fnww8/pEaNGiQnJ5OcnEz37t3Jycnhtdde459//iEqKoodO3Zw9uxZunfvXmDuSYwZM4bPPvuM+Ph4atW6d7OiZcuWYWJiQnR0NAsXLuTGjRu0atWKOnXqcPDgQbZu3crly5fp1q0bAHPmzMHb25v+/fvr6uHo6Mj48eM5fvw4P//8M/Hx8SxYsIAyZdQm3wkhhBBCiP+GrP70lFJTU1myZAnfffcdrVu3Bu59wK5USX8Vkw4dOjBw4EAAJkyYwIIFC2jQoAFvvPEGAKNHj8bb25vLly/j4ODAvHnzaN++PSNGjADA1dWV3377jc2bNwNgbm6OlZUVRkZGODg46M6zY8cOjhw5wrlz53B0dARg+fLl1KhRgwMHDtCgQYN8c09iypQptG3bVm+fi4sL06dP1z3+5JNPqFOnDtOmTdPt+/bbb3F0dOTkyZO4urpiYmKChYWFXj2SkpKoU6cO9evXB+718gghhBBCPCvZJbTHoLhIT8VTOnPmDBkZGTRq1Ei3r3Tp0ri56S/tef8bfQB7e3sAPD098+y7cuUKAAkJCTRs2FDvGA8/zk98fDyOjo66BgWAh4cHtra2xMfHP+5lFej+B/4H1atXT+/x4cOH2bNnD1ZWVrqtevXqwL3X7FHee+891qxZQ+3atRk1ahS//fbbI8ump6eTkpKit2XJfA4hhBBCiGIjjYpnzNjYWPdvjUbzyH05OWrrZD8tA4N7PwK5D7TWMzMz8y1raWlZ6L7U1FT8/f2Ji4vT206dOoWPj88j69G+fXv+/PNPhg0bxsWLF2ndurWut+ZhISEh2NjY6G2/fv91odcqhBBCCCGeDWlUPKVq1aphbGzM/v37dfuuX7/OyZMnlY7r5ubGgQMH9PY9/NjExITs7Gy9fe7u7pw/f57z58/r9h0/fpwbN27g4eHxyFzZsmUBSE5O1u17cNL2k6pbty7Hjh1Dq9Xi7Oyst91vgORXj/t16dWrF9999x2zZ8/m66/zbyiMHTuWmzdv6m3Nug946joLIYQQ4uWTk5NbbFtJJI2Kp2RlZUXfvn0ZOXIku3fv5ujRo/Tu3Vv3zf/TGjJkCBEREcycOZNTp06xaNEifv75Z12PBtybb3Du3Dni4uK4du0a6enptGnTBk9PT95++20OHTpETEwMgYGBtGjRQm+ewsM5c3NzGjdurJuAHRUVxbhx4566/u+//z7//PMPPXr04MCBA5w5c4Zt27bRp08fXUNCq9Wyf/9+EhMTuXbtGjk5OUyYMIGNGzdy+vRpjh07xubNm3F3d8/3HKamppQqVUpvMzIxeeo6CyGEEEIINdKoUPDFF1/QvHlz/P39adOmDc2aNcszx+BJNW3alIULFzJz5ky8vLzYunUrw4YNw8zMTFemS5cutGvXjpYtW1K2bFlWr16NRqNh48aN2NnZ4ePjQ5s2bXBycuL7778vMAf3JlJnZWVRr149hg4dyieffPLU9a9QoQLR0dFkZ2fz6quv4unpydChQ7G1tdU1uEaMGIGhoSEeHh6ULVuWpKQkTExMGDt2LLVq1cLHxwdDQ0PWrFnz1PUQQgghhCiI3FG7aGlyc2Xq+/Ouf//+nDhxgr179xZ3VZ5bE7edUMqP8zIuvFABem3/RynfxsNeKd+zilKcbMtXlPK//pWmlG/qaK2UP3dDbaJ+wrXbSvm/09TO37vSXaX8ymQLpfxbldX+G5h9XO36gxpVKrxQAYxuXVHKf3tW7fr7VDNUyv9+06zwQgU4cuWWUv7ERbV8Vtf/U8ovzE1Uyq/930WlfHqW2pxGQ03hZQqi+gEz8uRVpbyVqdpCoN5OpZXyb3pVVMqrWLT/z2I798BGiv9xP4dkSdnn0IwZM2jbti2Wlpb8/PPPLFu2jK+++qq4qyWEEEIIUWKU1JvQFRdpVDyHYmJimD59Ordu3cLJyYm5c+fSr1+/4q6WEEIIIYQQ+ZJGxXNo7dq1xV0FIYQQQgghHpvMqRBCCCGEEC+d+b+fK7ZzB3lXLbZzPyuy+tNLLDIyEo1Gw40bN4q7KkIIIYQQ4gUmw59eIr6+vtSuXZvZs2cD0KRJE5KTk7GxsSneigkhhBBC/MeyS+hN6IqLNCpeYiYmJjg4OBR3NYQQQgghxAtOhj+9JHr37k1UVBRz5sxBo9Gg0WgICwvTG/4UFhaGra0tmzdvxs3NDQsLC7p27UpaWhrLli1Dq9ViZ2dHcHCw7u7YAOnp6YwYMYKKFStiaWlJo0aNiIyM1Dt/dHQ0vr6+WFhYYGdnh5+fH9evXwcgJyeH6dOn4+zsjKmpKZUrV+bTTz/9r14aIYQQQgihSHoqXhJz5szh5MmT1KxZkylTpgBw7NixPOXS0tKYO3cua9as4datW3Tu3JmAgABsbW2JiIjg7NmzdOnShaZNm9K9e3cAgoKCOH78OGvWrKFChQqsX7+edu3aceTIEVxcXIiLi6N169a8++67zJkzByMjI/bs2aNrmIwdO5bFixcza9YsmjVrRnJyMidOqN3MTgghhBCiIDL8qWjJ6k8vkYfnVERGRtKyZUuuX7+Ora0tYWFh9OnTh9OnT1OtWjUABg0axIoVK7h8+TJWVlYAtGvXDq1Wy8KFC0lKSsLJyYmkpCQqVKigO1ebNm1o2LAh06ZN46233iIpKYlff/01T51u3bpF2bJlmT9/vtyLQwghhBD/mZl7zxTbuYc3r1Zs535WpKdC6LGwsNA1KADs7e3RarW6BsX9fVeuXAHgyJEjZGdn4+rqqnec9PR0XnnlFQDi4uJ444038j1ffHw86enptG7d+rHrmJ6eTnp6ut4+U1NTTE1NH/sYQgghhHi5SU9F0ZJGhdBjbGys91ij0eS7LycnB4DU1FQMDQ35448/MDQ01Ct3vyFibm7+yPMV9NyjhISEMHnyZL19EydOZNKkSU98LCGEEEIIoU4mar9ETExM9CZYF4U6deqQnZ3NlStXcHZ21tvuryxVq1Ytdu3alW/excUFc3PzRz6fn7Fjx3Lz5k29bezYsUVyPUIIIYR4OWTn5BbbVhJJT8VLRKvVsn//fhITE7GystL1NqhwdXXl7bffJjAwkNDQUOrUqcPVq1fZtWsXtWrVomPHjowdOxZPT08GDx7MoEGDMDExYc+ePbzxxhuUKVOG0aNHM2rUKExMTGjatClXr17l2LFj9O3bN99zylAnIYQQQojni/RUvERGjBiBoaEhHh4elC1blqSkpCI57tKlSwkMDOTDDz/Ezc2N119/nQMHDlC5cmXgXsNj+/btHD58mIYNG+Lt7c3GjRsxMrrXph0/fjwffvghEyZMwN3dne7du+vmbAghhBBCiOefrP4khBBCCCFeOp/uOlls5/64tWvhhV4w0lMhhBBCCCHEc+7LL79Eq9ViZmZGo0aNiImJKbD8Dz/8QPXq1TEzM8PT05OIiIhnWj9pVAghhBBCiJfOizRR+/vvv2f48OFMnDiRQ4cO4eXlhZ+f3yOHi//222/06NGDvn37Ehsby+uvv87rr7/O0aNHVV+2R5LhT0IIIYQQ4qUzZUdCsZ17Qlu3JyrfqFEjGjRowPz58wHIycnB0dGRIUOGMGbMmDzlu3fvzu3bt9m8ebNuX+PGjalduzYLFy5Uq/wjyOpPokRQ/cPwUU21Trv0yO+V8sYdBinlT98xUcrbW6r9KTifkqGUNzNSe/2PXUlVyienphdeqACpd7OU8sH/bFTKX2oxUClf5fZZpXz4zbJKeWMDjVK+/YWflPKJdd5UyjvnXFbKZ1uXU8pnrJullB9r2Vkp7+NSRinfrVYFpfwgjVYp37Opo1I+9ojawiJ9V7yvlE9v1U8pf/5WplJ+//kbSvl+Daso5V9UT3Ij34yMDP744w+95fMNDAxo06YNv//+e77H//333xk+fLjePj8/PzZs2KBe+UeQ4U/PscjISDQaDTdu3CjuqjySVqtl9uzZxV0NIYQQQognUpzDn0JCQrCxsdHbQkJC8q3ntWvXyM7Oxt7eXm+/vb09ly5dyjdz6dKlJypfFKRRocjX15ehQ4c+88yzptFonmnrVQghhBBC3FMSb+Qrw5+EEEIIIcRLpzjvbP0kN/ItU6YMhoaGXL6sP9Ty8uXLODg45JtxcHB4ovJFQXoqFPTu3ZuoqCjmzJmDRqNBo9GQmJhIVFQUDRs2xNTUlPLlyzNmzBiysrIKzABERETg6uqKubk5LVu21O2/LywsDFtbWzZv3oybmxsWFhZ07dqVtLQ0li1bhlarxc7OjuDgYLKzs3W55ORkOnbsiLm5OVWrVmXVqlV6w5a0Wi0AAQEBaDQa3eMzZ87w2muvYW9vj5WVFQ0aNGDnzp0FvibffPMNtra27Nq1C4CjR4/Svn17rKyssLe3p2fPnly7dk1X3tfXl+DgYEaNGkXp0qVxcHBg0qRJT/eGCCGEEEKUMCYmJtSrV0/32QruTdTetWsX3t7e+Wa8vb31ygPs2LHjkeWLgjQqFMyZMwdvb2/69+9PcnIyycnJGBsb06FDBxo0aMDhw4dZsGABS5Ys4ZNPPnlkxtHRkfPnz9O5c2f8/f2Ji4ujX79++c7mT0tLY+7cuaxZs4atW7cSGRlJQEAAERERREREsGLFChYtWsSPP/6oywQGBnLx4kUiIyMJDw/n66+/1luC7MCBA8C9O2MnJyfrHqemptKhQwd27dpFbGws7dq1w9/f/5F34p4+fTpjxoxh+/bttG7dmhs3btCqVSvq1KnDwYMH2bp1K5cvX6Zbt256uWXLlmFpacn+/fuZPn06U6ZMYceOHWpvjhBCCCFEAV6kJWWHDx/O4sWLWbZsGfHx8bz33nvcvn2bPn36APc+6z04fOqDDz5g69athIaGcuLECSZNmsTBgwcJCgoqstfvYTL8SYGNjQ0mJiZYWFjoupM+/vhjHB0dmT9/PhqNhurVq3Px4kVGjx7NhAkT8s0ALFiwgGrVqhEaGgqAm5sbR44c4fPPP9c7Z2Zmpq4sQNeuXVmxYgWXL1/GysoKDw8PWrZsyZ49e+jevTsnTpxg586dHDhwgPr16wP3ehNcXFx0xyxb9t7KLba2tnp18vLywsvLS/d46tSprF+/nk2bNuX5oRw9ejQrVqwgKiqKGjVqADB//nzq1KnDtGnTdOW+/fZbHB0dOXnyJK6u9+4mWatWLSZOnAiAi4sL8+fPZ9euXbRt2/aJ3xMhhBBCiJKme/fuXL16lQkTJnDp0iVq167N1q1bdZOxk5KSMDD4t6+gSZMmrFq1inHjxvHRRx/h4uLChg0bqFmz5jOrozQqilh8fDze3t5oNP8ukdi0aVNSU1O5cOEClStXfmSuUaNGevvy66KysLDQNSjg3kx+rVaLlZWV3r77PREJCQkYGRlRt25d3fPOzs7Y2dkVei2pqalMmjSJLVu2kJycTFZWFnfu3MnTUxEaGsrt27c5ePAgTk5Ouv2HDx9mz549enW778yZM3qNigeVL1/+kTdzgfyXYcvKyMDIRG1ZVSGEEEKI51VQUNAjexoiIyPz7HvjjTd44403nnGt/iXDn14wxsbGeo81Gk2++3JycpTPNWLECNavX8+0adPYu3cvcXFxeHp6kpGhf0+C5s2bk52dzdq1a/X2p6am6oZzPbidOnUKHx+fAq+poPrntwzb3jWLlK9XCCGEEC+PF2n404tAeioUmZiY6E2Kdnd3Jzw8nNzcXF1vRXR0NNbW1lSqVCnfzP3cpk2b9Pbt27dPuX5ubm5kZWURGxtLvXr1ADh9+jTXr1/XK2dsbJynTtHR0fTu3ZuAgADgXiPh4cnjAA0bNiQoKIh27dphZGTEiBEjAKhbty7h4eFotVqMjIruR23s2LF5bugyY++fRXZ8IYQQQgjxZKSnQpFWq2X//v0kJiZy7do1Bg8ezPnz5xkyZAgnTpxg48aNTJw4keHDh+vGuj2cycnJYdCgQZw6dYqRI0eSkJDAqlWrCAsLU65f9erVadOmDQMGDCAmJobY2FgGDBiAubm53hAtrVbLrl27uHTpkq7B4eLiwrp164iLi+Pw4cO89dZbj+xBaNKkCREREUyePFm3qtT777/PP//8Q48ePThw4ABnzpxh27Zt9OnTJ08D5kmYmppSqlQpvU2GPgkhhBDiSWTl5BbbVhJJo0LRiBEjMDQ0xMPDg7Jly5KZmUlERAQxMTF4eXkxaNAg+vbty7hx4x6ZSUpKonLlyoSHh7Nhwwa8vLxYuHCh3gRnFcuXL8fe3h4fHx8CAgLo378/1tbWmJmZ6cqEhoayY8cOHB0dqVOnDgAzZ87Ezs6OJk2a4O/vj5+fn97cjIc1a9aMLVu2MG7cOObNm0eFChWIjo4mOzubV199FU9PT4YOHYqtra3eZCIhhBBCCPFi0+Tm5pbM5pJ4pAsXLuDo6MjOnTtp3bp1cVenSEzZkaCU/6imWiMnPfJ7pbxxh0FK+dN31Hpq7C3VhqedT8kovFABzIzUXv9jV1KV8smp6YUXKkDq3SylfPA/G5Xyl1oMVMpXuX1WKR9+s6xS3thAU3ihArS/8JNSPrHOm0p555zLhRcqQLZ1OaV8xrpZSvmxlp2V8j4uZZTy3WpVUMoP0miV8j2bOirlY488emGRx9F3xftK+fRW/ZTy529lKuX3n7+hlO/XsIpSXsXwjUeL7dwzX3t2qzAVF5lT8RLYvXs3qampeHp6kpyczKhRo9BqtXqTpYUQQgghXiYldcJ0cZFGxUsgMzOTjz76iLNnz2JtbU2TJk1YuXJlnlWXhBBCCCGEeBrSqHgJ+Pn54efnV9zVEEIIIYR4bkhPRdGSRoUQqI9pNrRTy+dq1OYUXL2tOqdBbUx7WubTr+YFkK14W5X0LLUDFPd/LKY1GhVeqAClzQyV8jdNXZTyqVevKeVtTNX+KzKwLKWUr2it1mubmlNRKa/642fTIkApX+msuVJe9fdPleqciBXR55Xy82LmKuVzXRor5Q0V5yQZatTyKelqc8pEySFL8DxDvr6+DB069KnzkZGRaDQabty4UWR1KmparVa3hKwQQgghhHg5SU/FM7Ru3boXZt6CRqNh/fr1vP7668VdFSGEEEKIZy5bFkAtUtKoeIZKly5d3FUQQgghhBDimXsphj/5+voyZMgQhg4dip2dHfb29ixevJjbt2/Tp08frK2tcXZ25ueffwYgOzubvn37UrVqVczNzXFzc2POnDl6x8zKyiI4OBhbW1teeeUVRo8eTa9evfS+6X94+FN6ejqjR4/G0dERU1NTnJ2dWbJkie75iIgIXF1dMTc3p2XLliQmJuqdMywsDFtbWzZv3oybmxsWFhZ07dqVtLQ0li1bhlarxc7OjuDgYL07VicnJ9OxY0fMzc2pWrUqq1at0hu2pNVqAQgICECj0egenzlzhtdeew17e3usrKxo0KABO3fuLPC1/uabb7C1tWXXrl0AHD16lPbt22NlZYW9vT09e/bk2rV/x1/7+voSHBzMqFGjKF26NA4ODkyaNKnAcwghhBBCqMrOyS22rSR6KRoVAMuWLaNMmTLExMQwZMgQ3nvvPd544w2aNGnCoUOHePXVV+nZsydpaWnk5ORQqVIlfvjhB44fP86ECRP46KOPWLt2re54n3/+OStXrmTp0qVER0eTkpLChg0bCqxDYGAgq1evZu7cucTHx7No0SKsrKwAOH/+PJ07d8bf35+4uDj69evHmDFj8hwjLS2NuXPnsmbNGrZu3UpkZCQBAQFEREQQERHBihUrWLRoET/++KPeeS9evEhkZCTh4eF8/fXXXLny7816Dhw4AMDSpUtJTk7WPU5NTaVDhw7s2rWL2NhY2rVrh7+/P0lJSfle3/Tp0xkzZgzbt2+ndevW3Lhxg1atWlGnTh0OHjzI1q1buXz5Mt26dcvz3lhaWrJ//36mT5/OlClT2LFjR4GvpRBCCCGEeH68NMOfvLy8GDduHABjx47ls88+o0yZMvTv3x+ACRMmsGDBAv73v//RuHFjJk+erMtWrVqV33//nbVr1+o+EM+bN4+xY8cSEHBv1Y358+cTERHxyPOfPHmStWvXsmPHDtq0aQOAk5OT7vkFCxZQrVo1QkNDAXBzc+PIkSN8/vnnesfJzMzUlQXo2rUrK1as4PLly1hZWeHh4UHLli3Zs2cP3bt358SJE+zcuZMDBw5Qv3594F5vgovLv6u9lC177264tra2ODg46L1mXl5eusdTp05l/fr1bNq0iaCgIL16jR49mhUrVhAVFUWNGjV0r0mdOnWYNm2arty3336Lo6MjJ0+exNXVFYBatWoxceJEAFxcXJg/fz67du2ibdu2j3w9hRBCCCFUlNQeg+Ly0jQqatWqpfu3oaEhr7zyCp6enrp99vb2ALpv8L/88ku+/fZbkpKSuHPnDhkZGdSuXRuAmzdvcvnyZRo2bKh3zHr16pGTk//SenFxcRgaGtKiRYt8n4+Pj6dRI/1lJb29vfOUs7Cw0DUo7tdbq9Xqejzu77t/HQkJCRgZGVG3bl3d887OztjZ2eVbjwelpqYyadIktmzZQnJyMllZWdy5cydPT0VoaCi3b9/m4MGDeg2lw4cPs2fPHr263XfmzBm9RsWDypcvr9eT8rD09HTS09P19mVlZGBkYlLoNQkhhBBCiKL30gx/engVJo1Go7dP8//Xac7JyWHNmjWMGDGCvn37sn37duLi4ujTpw8ZGU9/LwBzc7V1wO8r7Dru73tU4+ZJjBgxgvXr1zNt2jT27t1LXFwcnp6eeV6H5s2bk52drTc8DO41Su4P53pwO3XqFD4+PgVeU0H1DwkJwcbGRm/bu2aR8vUKIYQQQoin89L0VDyJ6OhomjRpwuDBg3X7zpw5o/u3jY0N9vb2HDhwQPfhODs7m0OHDul6Mx7m6elJTk4OUVFRuuFPD3J3d2fTpk16+/bt26d8LW5ubmRlZREbG0u9evUAOH36NNevX9crZ2xsrDe5G+69Dr1799YN8UpNTc0zeRygYcOGBAUF0a5dO4yMjBgxYgQAdevWJTw8HK1Wi5FR0f2ojR07luHDh+vtm7H3zyI7vhBCCCFKPhn+VLRemp6KJ+Hi4sLBgwfZtm0bJ0+eZPz48brJy/cNGTKEkJAQNm7cSEJCAh988AHXr1/X9Xg8TKvV0qtXL9599102bNjAuXPniIyM1H27P2jQIE6dOsXIkSNJSEhg1apVhIWFKV9L9erVadOmDQMGDCAmJobY2FgGDBiAubm5Xl21Wi27du3i0qVLugaHi4sL69atIy4ujsOHD/PWW289sgehSZMmREREMHnyZN2qUu+//z7//PMPPXr04MCBA5w5c4Zt27bRp0+fPA2YJ2FqakqpUqX0Nhn6JIQQQghRfKRRkY+BAwfSuXNnunfvTqNGjfj777/1ei3g3sTkHj16EBgYiLe3N1ZWVvj5+WFmZvbI4y5YsICuXbsyePBgqlevTv/+/bl9+zYAlStXJjw8nA0bNuDl5cXChQv1JjirWL58Ofb29vj4+BAQEED//v2xtrbWq2toaCg7duzA0dGROnXqADBz5kzs7Oxo0qQJ/v7++Pn56c3NeFizZs3YsmUL48aNY968eVSoUIHo6Giys7N59dVX8fT0ZOjQodja2mJgID96QgghhCg+2Tk5xbaVRJrcXLmdYFHIycnB3d2dbt26MXXq1OKuToEuXLiAo6MjO3fupHXr1sVdnSIxZUeCUn60t0PhhQqQ++v3SnlNk65K+X1X1f5AOdqYKuUvpT79fCMAU0NDpXzCtVSl/NU0tfrfyXj6njeAkeUvKeVvVaqnlFcdAbAh4VrhhQpgY6o2PNL/xi9K+fR6rynlVYdQqL7+Nv+cUsp/cdZCKV/RRm3OYM+6lZTy0c2aK+VXRJ9Xys+LmauUz3VprJRPN7FWyp9PyVTKbz11VSk/vHm1wgs9Iz2/O1hs517xTv1iO/ezInMqntKff/7J9u3badGiBenp6cyfP59z587x1ltvFXfV8ti9ezepqal4enqSnJzMqFGj0Gq1epOlhRBCCCGEeFrSqHhKBgYGhIWFMWLECHJzc6lZsyY7d+7E3d29uKuWR2ZmJh999BFnz57F2tqaJk2asHLlyjyrLgkhhBBCvCxkonbRkkbFU3J0dCQ6Orq4q/FY/Pz88PPzK+5qCCGEEEKIEkoaFUIAmqz0wgsVwLBsRaV8iubRE/wfR2kLtTGx5kZqE+ezFeecGZvkv2ra4zIwUMsbKuZVZV/9Syl/yKi6Ur6Fkdr5bUzLKeWzFb8sNKrorJTfcPp64YUKEOCgNicn3cpeLR+zTSl/LL2VUr6ybdHch+lpxR559M1SH4fqnIghDYOV8l/Gr1DKX36ltlL+6m21n19b8xd31IP0VBQtWYLnCWi1Wt1yqf8VX19fhg4d+p+e80mEhYVha2tb3NUQQgghhBDFSBoVAoBJkyY98sZ9QgghhBAlTVZObrFtJZE0KoQQQgghhBBKpFHxAF9fX4KCgggKCsLGxoYyZcowfvx4HryVR1paGu+++y7W1tZUrlyZr7/+Wvdcq1atCAoK0jvm1atXMTExYdeuXQB89dVXuLi4YGZmhr29PV27/nt/gtu3bxMYGIiVlRXly5cnNDQ0Tx21Wi2ffPKJrlyVKlXYtGkTV69e5bXXXsPKyopatWpx8KD+2suLFy/G0dERCwsLAgICmDlzpm7YUlhYGJMnT+bw4cNoNBo0Go3ubt4zZ87E09MTS0tLHB0dGTx4MKmpj74nwNWrV6lfvz4BAQGkp6eTk5NDSEgIVatWxdzcHC8vL3788Udd+cjISDQaDbt27aJ+/fpYWFjQpEkTEhLU7jshhBBCCCH+O9KoeMiyZcswMjIiJiaGOXPmMHPmTL755hvd86GhodSvX5/Y2FgGDx7Me++9p/sA3K9fP1atWkV6+r+Tfr/77jsqVqxIq1atOHjwIMHBwUyZMoWEhAS2bt2qd6+IkSNHEhUVxcaNG9m+fTuRkZEcOnQoTx1nzZpF06ZNiY2NpWPHjvTs2ZPAwEDeeecdDh06RLVq1QgMDNQ1hqKjoxk0aBAffPABcXFxtG3blk8//VR3vO7du/Phhx9So0YNkpOTSU5Opnv37sC9pXPnzp3LsWPHWLZsGbt372bUqFH5vnbnz5+nefPm1KxZkx9//BFTU1NCQkJYvnw5Cxcu5NixYwwbNox33nmHqKgovezHH39MaGgoBw8exMjIiHffffdJ3zohhBBCiMeWnZNbbFtJJKs/PcTR0ZFZs2ah0Whwc3PjyJEjzJo1i/79+wPQoUMHBg8eDMDo0aOZNWsWe/bswc3Njc6dOxMUFMTGjRvp1q0bcK8XoHfv3mg0GpKSkrC0tKRTp05YW1tTpUoV6tSpA0BqaipLlizhu+++093letmyZVSqlPdOox06dGDgwIEATJgwgQULFtCgQQPeeOMNXb28vb25fPkyDg4OzJs3j/bt2zNixAgAXF1d+e2339i8eTMA5ubmWFlZYWRkhIOD/p2lH5wkfr+XZNCgQXz11Vd65RISEmjbti0BAQHMnj0bjUZDeno606ZNY+fOnXh7ewPg5OTEr7/+yqJFi2jRooUu/+mnn+oejxkzho4dO3L37l3MzNRWRRJCCCGEEM+e9FQ8pHHjxmg0/y4v6e3tzalTp8jOzgagVq1auuc0Gg0ODg5cuXJvOTszMzN69uzJt99+C8ChQ4c4evQovXv3BqBt27ZUqVIFJycnevbsycqVK0lLSwPgzJkzZGRk0KhRI93xS5cujZubW546PlgHe/t7SxF6enrm2Xe/XgkJCTRs2FDvGA8/fpSdO3fSunVrKlasiLW1NT179uTvv//W1Rvgzp07NG/enM6dOzNnzhzd63f69GnS0tJo27YtVlZWum358uWcOXPmkddUvnx5vfo/LD09nZSUFL0tK0NtSTwhhBBCvFykp6JoSaPiCT18F2qNRkNOzr+L9Pfr148dO3Zw4cIFli5dSqtWrahSpQoA1tbWHDp0iNWrV1O+fHkmTJiAl5cXN27ceOo63P8An9++B+v1NBITE+nUqRO1atUiPDycP/74gy+//BKAjAc+xJuamtKmTRs2b97MX3/9u979/bkXW7ZsIS4uTrcdP35cb17Fk9Y/JCQEGxsbvW3vmkVK1yqEEEIIIZ6eNCoesn//fr3H+/btw8XFBUNDw8fKe3p6Ur9+fRYvXsyqVavyzA0wMjKiTZs2TJ8+nf/9738kJiaye/duqlWrhrGxsd75r1+/zsmTJ5Wvyc3NjQMHDujte/ixiYmJrjfmvj/++IOcnBxCQ0Np3Lgxrq6uXLx4Mc/xDQwMWLFiBfXq1aNly5a6Mh4eHpiampKUlISzs7Pe5ujo+NTXM3bsWG7evKm3NX9z4FMfTwghhBBCqJE5FQ9JSkpi+PDhDBw4kEOHDjFv3rx8V2EqSL9+/QgKCsLS0pKAgADd/s2bN3P27Fl8fHyws7MjIiKCnJwc3NzcsLKyom/fvowcOZJXXnmFcuXK8fHHH2NgoN7uGzJkCD4+PsycORN/f392797Nzz//rDfMS6vVcu7cOeLi4qhUqRLW1tY4OzuTmZnJvHnz8Pf3Jzo6moULF+Z7DkNDQ1auXEmPHj1o1aoVkZGRODg4MGLECIYNG0ZOTg7NmjXj5s2bREdHU6pUKXr16vVU12NqaoqpqanePiMTk6c6lhBCCCFeTiV1GFJxkZ6KhwQGBnLnzh0aNmzI+++/zwcffMCAAQOe6Bg9evTAyMiIHj166E00trW1Zd26dbRq1Qp3d3cWLlzI6tWrqVGjBgBffPEFzZs3x9/fnzZt2tCsWTPq1aunfE1NmzZl4cKFzJw5Ey8vL7Zu3cqwYcP06talSxfatWtHy5YtKVu2LKtXr8bLy4uZM2fy+eefU7NmTVauXElISMgjz2NkZKS7nlatWnHlyhWmTp3K+PHjCQkJwd3dnXbt2rFlyxaqVq2qfF1CCCGEEOL5oMl98CYMLzlfX19q167N7NmzlY6TmJhItWrVOHDgAHXr1i2ayhWx/v37c+LECfbu3VvcVSkSU3ao3ddiTAM7pbzBmQOFFypAimtLpfxfqZlK+TLmap2Wp/+5q5S3MVM7//Grj753yuO4lqY20T/1bpZSfrjRH0r5X8u3Vsq3MPqr8EIF2HCrnFI+W/F/oa5WeYdlPokfUyso5QMc1H5+0q3slfIGW+Yp5Qemt1LKt6/hUHihArxVJ+8qh09ivk3eBU2exMCdXyjlhzQMVsp/Gb9CKX/uldpK+b9S0gsvVIAz19MKL1SAd+tXVsqr8PsqutjOvW1w02I797Miw5+KUGZmJn///Tfjxo2jcePGz1WDYsaMGbRt2xZLS0t+/vlnli1blmdZWCGEEEIIIZ6GNCqKUHR0NC1btsTV1TXP6kbFLSYmhunTp3Pr1i2cnJyYO3cu/fr1K+5qCSGEEEIUC5lTUbSkUfGAyMhIpbyvry/P62iytWvXFncVhBBCCCFECSWNClEiqH7bkJxtoZQvV0NtTPuVm2pjsi/cVJvTcDvDuPBCBbhyW21MblpmduGFnmFe9edHOd/gdaV8zvlbSvkL1s5K+eTkq0r5jCy1e+pkVlMbU2+doTYm/IpxWaX83zfUfv+rv/pu4YUKUHp3slJedU6Mqr4r3lfK57o0Vsqrzol4372nUj7wnNqcLNU5Zap/f0XJIas/PcciIyPRaDRPfHO8/5JWq1We2C6EEEII8V/Lzckttq0kkkZFAXx9fRk6dGhxV+M/odFo2LBhQ3FXQwghhBBCvIBk+JOC3NxcsrOzMTKSl1EIIYQQ4kWSU0J7DIqL9FQ8Qu/evYmKimLOnDloNBo0Gg1hYWFoNBp+/vln6tWrh6mpKb/++iu9e/fm9ddf18sPHToUX19f3eOcnBxCQkKoWrUq5ubmeHl55VkhKiIiAldXV8zNzWnZsiWJiYl6z4eFhWFra8vmzZtxc3PDwsKCrl27kpaWxrJly9BqtdjZ2REcHEx29r9jHJOTk+nYsSPm5uZUrVqVVatW6Q1b0mq1AAQEBKDRaHSPz5w5w2uvvYa9vT1WVlY0aNCAnTt3Fvi6ffPNN9ja2rJr1y4Ajh49Svv27bGyssLe3p6ePXty7do1XXlfX1+Cg4MZNWoUpUuXxsHBgUmTJhX85gghhBBCiOeKNCoeYc6cOXh7e9O/f3+Sk5NJTk7G0dERgDFjxvDZZ58RHx9PrVq1Hut4ISEhLF++nIULF3Ls2DGGDRvGO++8Q1RUFADnz5+nc+fO+Pv7ExcXR79+/RgzZkye46SlpTF37lzWrFnD1q1biYyMJCAggIiICCIiIlixYgWLFi3Sa7AEBgZy8eJFIiMjCQ8P5+uvv+bKlSu65w8cuHfjtqVLl5KcnKx7nJqaSocOHdi1axexsbG0a9cOf39/kpKS8r3G6dOnM2bMGLZv307r1q25ceMGrVq1ok6dOhw8eJCtW7dy+fJlunXrppdbtmwZlpaW7N+/n+nTpzNlyhR27NjxWK+rEEIIIYQofjJu5xFsbGwwMTHBwsICB4d7dws9ceIEAFOmTKFt27aPfaz09HSmTZvGzp078fb2BsDJyYlff/2VRYsW0aJFCxYsWEC1atUIDQ0FwM3NjSNHjvD555/rHSszM1NXFqBr166sWLGCy5cvY2VlhYeHBy1btmTPnj10796dEydOsHPnTg4cOED9+vWBe70JLi4uumOWLXtv5RJbW1vdtQJ4eXnh5eWlezx16lTWr1/Ppk2bCAoK0qvX6NGjWbFiBVFRUdSoUQOA+fPnU6dOHaZNm6Yr9+233+Lo6MjJkydxdXUFoFatWkycOBEAFxcX5s+fz65du57oNRZCCCGEeBLP620AXlTSqHgK9z+cP67Tp0+TlpaW50NyRkYGderUASA+Pp5GjRrpPX+/AfIgCwsLXYMCwN7eHq1Wi5WVld6++z0RCQkJGBkZ6d3d29nZGTs7u0LrnZqayqRJk9iyZQvJyclkZWVx586dPD0VoaGh3L59m4MHD+Lk5KTbf/jwYfbs2aNXt/vOnDmj16h4UPny5fV6Uh6Wnp5Oerr+EqZZGRkYmZgUek1CCCGEEKLoSaPiKVhaWuo9NjAwyNPazczM1P07NTUVgC1btlCxYkW9cqampk90bmNj/fsJaDSafPfl5Kit+w4wYsQIduzYwYwZM3B2dsbc3JyuXbuSkaG/pnXz5s3ZsmULa9eu1RuylZqair+/f57eFrjXcCjomgqqf0hICJMnT9bb5/P2+/j2DHpEQgghhBBCX0ld2rW4SKOiACYmJnoTnh+lbNmyHD16VG9fXFyc7sOyh4cHpqamJCUl0aJFi3yP4e7uzqZNm/T27du37ylr/i83NzeysrKIjY2lXr16wL2ek+vXr+uVMzY2znOt0dHR9O7dm4CAAOBeI+HhyeMADRs2JCgoiHbt2mFkZMSIESMAqFu3LuHh4Wi12iJdIWvs2LEMHz5cb9/nUXnrJYQQQggh/hsyUbsAWq2W/fv3k5iYyLVr1x757XmrVq04ePAgy5cv59SpU0ycOFGvkWFtbc2IESMYNmwYy5Yt48yZMxw6dIh58+axbNkyAAYNGsSpU6cYOXIkCQkJrFq1irCwMOVrqF69Om3atGHAgAHExMQQGxvLgAEDMDc3R6PR6F3rrl27uHTpkq7B4eLiwrp164iLi+Pw4cO89dZbj3wNmjRpQkREBJMnT9atKvX+++/zzz//0KNHDw4cOMCZM2fYtm0bffr0eazG2qOYmppSqlQpvU2GPgkhhBDiSeTk5BbbVhJJo6IAI0aMwNDQEA8PD8qWLfvIVY/8/PwYP348o0aNokGDBty6dYvAwEC9MlOnTmX8+PGEhITg7u5Ou3bt2LJlC1WrVgWgcuXKhIeHs2HDBry8vFi4cKHeBGcVy5cvx97eHh8fHwICAujfvz/W1taYmZnpyoSGhrJjxw4cHR118zxmzpyJnZ0dTZo0wd/fHz8/P725GQ9r1qwZW7ZsYdy4ccybN48KFSoQHR1NdnY2r776Kp6engwdOhRbW1sMDORHTwghhBCipNDkytT3l86FCxdwdHRk586dtG7durirUyQmbjuhlH+3fiWlfDlLteFdf97MKLxQAc5dv6OUtzM3LrxQAf5KuauUtzJRe/3+uqV2/lvpWUr51Ltq+eFNKyvlo8/fUsq7lDZXyv908qpSPiNLbQ7Y+3XLKeV3n09Tyteyz7sYxZP4+47az091y8zCCxVg5O5kpXz9KoUv/FGQnnXV/v7e2TRXKW/o86Za/lKCUv59955K+cBzfyjlk2+lF16ooHyqWj7Iu6pSXkXzL/YU27n3jmxZbOd+VmROxUtg9+7dpKam4unpSXJyMqNGjUKr1eLj41PcVRNCCCGEKBa56mvaiAdIo+IlkJmZyUcffcTZs2extramSZMmrFy5Ms+qS0IIIYQQQjwNaVS8BPz8/PDz8yvuagghhBBCPDdkBkDRkkaFKBEMDTSFFyrAF5FnlfIDvKso5d1OblbKT0x0KbxQAcpamxVeqAAftlAbEzthq9qYZBtztdW/rM3U/hSq/vx9vO20Ur5x1dJK+fd+OKWU9/N0UMpvjDmvlK9qZ6GUd33FsvBCBRj503GlfCfP8oUXKkA5J7U5DdNbVyy8UAEGR/yplFedU5Heqp9SXvX39/IrtZXyqnMilletp5Sf+8tnSvkx/9RUyouSQ5bgeYFFRkai0Wi4ceNGkRwvLCwMW1vbIjmWCl9fX4YOHVrc1RBCCCGEEI9JeiqEEEIIIcRLp6TeL6K4SE/FCyAjQ225USGEEEIIIZ4laVQUgc2bN2Nra6u7S3RcXBwajYYxY8boyvTr14933nmHv//+mx49elCxYkUsLCzw9PRk9erVesfz9fUlKCiIoUOHUqZMGd0k64iICFxdXTE3N6dly5YkJibq5f7880/8/f2xs7PD0tKSGjVqEBERAfw7VGrLli3UqlULMzMzGjdurHfn74edOXOG1157DXt7e6ysrGjQoAE7d+7UK5Oens7o0aNxdHTE1NQUZ2dnlixZonv+6NGjtG/fHisrK+zt7enZsyfXrl3TPX/79m0CAwOxsrKifPnyhIaGPsErL4QQQgjxdHJzcottK4mkUVEEmjdvzq1bt4iNjQUgKiqKMmXKEBkZqSsTFRWFr68vd+/epV69emzZsoWjR48yYMAAevbsSUxMjN4xly1bhomJCdHR0SxcuJDz58/TuXNn/P39iYuLo1+/fnqNFoD333+f9PR0fvnlF44cOcLnn3+OlZX+TZlGjhxJaGgoBw4coGzZsvj7+5OZmf+Nk1JTU+nQoQO7du0iNjaWdu3a4e/vr3dn8cDAQFavXs3cuXOJj49n0aJFunPeuHGDVq1aUadOHQ4ePMjWrVu5fPky3bp106tPVFQUGzduZPv27URGRnLo0KEnfxOEEEIIIUSxkTkVRcDGxobatWsTGRlJ/fr1iYyMZNiwYUyePJnU1FRu3rzJ6dOnadGiBRUrVmTEiBG67JAhQ9i2bRtr166lYcOGuv0uLi5Mnz5d9/ijjz6iWrVqum/y3dzcdA2H+5KSkujSpQuenp4AODk55anrxIkTadu2LXCv4VKpUiXWr1+v90H/Pi8vL7y8vHSPp06dyvr169m0aRNBQUGcPHmStWvXsmPHDtq0aZPnnPPnz6dOnTpMmzZNt+/bb7/F0dGRkydPUqFCBZYsWcJ3332nu7P3/ToJIYQQQjxLJbXHoLhIT0URadGiBZGRkeTm5rJ37146d+6Mu7s7v/76K1FRUVSoUAEXFxeys7OZOnUqnp6elC5dGisrK7Zt26b37T9AvXr6S8TFx8fTqFEjvX3e3t56j4ODg/nkk09o2rQpEydO5H//+1+eej6YKV26NG5ubsTHx+d7TampqYwYMQJ3d3dsbW2xsrIiPj5eV9e4uDgMDQ1p0aJFvvnDhw+zZ88erKysdFv16tWBe0Orzpw5Q0ZGht513a9TQdLT00lJSdHbsmTeiRBCCCFEsZFGRRHx9fXl119/5fDhwxgbG1O9enV8fX2JjIwkKipK98H7iy++YM6cOYwePZo9e/YQFxeHn59fnsnYlpZPvm56v379OHv2LD179uTIkSPUr1+fefPmPfU1jRgxgvXr1zNt2jT27t1LXFwcnp6eurqam5sXmE9NTdUN13pwO3XqFD4+Pk9dr5CQEGxsbPS2vWsWPfXxhBBCCCGEGmlUFJH78ypmzZqla0Dcb1RERkbi6+sLQHR0NK+99hrvvPMOXl5eODk5cfLkyUKP7+7unmfexb59+/KUc3R0ZNCgQaxbt44PP/yQxYsXPzJz/fp1Tp48ibu7e77njI6Opnfv3gQEBODp6YmDg4Pe5HBPT09ycnKIiorKN1+3bl2OHTuGVqvF2dlZb7O0tKRatWoYGxuzf//+PHUqyNixY7l586be1vzNgQVmhBBCCCEelJObW2xbSSSNiiJiZ2dHrVq1WLlypa4B4ePjw6FDhzh58qSuoeHi4sKOHTv47bffiI+PZ+DAgVy+fLnQ4w8aNIhTp04xcuRIEhISWLVqFWFhYXplhg4dyrZt2zh37hyHDh1iz549eRoMU6ZMYdeuXRw9epTevXtTpkwZXn/99XzP6eLiwrp164iLi+Pw4cO89dZb5OTk6J7XarX06tWLd999lw0bNnDu3DkiIyNZu3YtcG/i+D///EOPHj04cOAAZ86cYdu2bfTp04fs7GysrKzo27cvI0eOZPfu3bo6GRgU/GNpampKqVKl9DYjE7U7KgshhBBCiKcnjYoi1KJFC7Kzs3WNitKlS+Ph4YGDg4NunsC4ceOoW7cufn5++Pr64uDg8MgP9Q+qXLky4eHhbNiwAS8vLxYuXKg3ARogOzub999/H3d3d9q1a4erqytfffWVXpnPPvuMDz74gHr16nHp0iV++uknTB7xgXzmzJnY2dnRpEkT/P398fPzo27dunplFixYQNeuXRk8eDDVq1enf//+3L59G4AKFSoQHR1NdnY2r776Kp6engwdOhRbW1tdw+GLL76gefPm+Pv706ZNG5o1a5ZnPokQQgghRFGTJWWLliY3t4T2wQg9kZGRtGzZkuvXr2Nra1vc1SlyU3YkKOWvpKQr5Qd4V1HKu53crJQPTHRRype1NlPKf9iiqlJ+wla198/GXK2nytpMbSE8QwONUj4tI1sp37hqaaV82G+JSnk/Twel/Lp9SYUXKsBQv4IXdyiM6ytPPoftQZ8q/v3p5FleKd/KyU4pb6dR+/s3OOJPpfySN+so5W+kpinlVX9/L9/OUspfua220MjyqmpfxM395TOl/Jh/airlZ76mlldRf+K2Yjv3wcl+xXbuZ0V6KoQQQgghhBBK5D4VQgghhBDipVNShyEVF2lUvCR8fX2RkW5CCCGEEOJZkEaFEICJkdpIwMOXbinlq9dRG1tZ+tpfSnkLE0Ol/M10tTkBpS1NlfKq9VcdU62aL1dK7fr/vK42prxuFbUx+SaGar8/tZ1eUcrfyVT7+Tt2NVUp71TWSilvoDonJzOn8EIFMDRRm1NlZVq8HyXO38pUyhtq1F7/q4pzIq6lqeVV50QE+4xRytttjlDKF6cc6akoUjKn4iUQGRmJRqPhxo0bymUTExPRaDTExcXlWz4sLKxIJoJrNBo2bNigfBwhhBBCCPHsSU+FeCKOjo4kJydTpkyZ4q6KEEIIIcRTk2HhRUt6KkqQjAy1LtTHYWhoiIODA0ZG0h4VQgghhBD3SKPiP7R582ZsbW3Jzr43/jcuLg6NRsOYMf+OZ+zXrx/vvPMOf//9Nz169KBixYpYWFjg6enJ6tWr9Y7n6+tLUFAQQ4cOpUyZMvj53RuXHxERgaurK+bm5rRs2ZLExES93J9//om/vz92dnZYWlpSo0YNIiLyHxOZlpZG+/btadq0KTdu3Mgz/OlxbNy4kbp162JmZoaTkxOTJ08mK+vfdb1PnTqFj48PZmZmeHh4sGPHjsc+thBCCCGEKH7ydfN/qHnz5ty6dYvY2Fjq169PVFQUZcqUITIyUlcmKiqK0aNHc/fuXerVq8fo0aMpVaoUW7ZsoWfPnlSrVo2GDRvqyi9btoz33nuP6OhoAM6fP0/nzp15//33GTBgAAcPHuTDDz/Uq8f7779PRkYGv/zyC5aWlhw/fhwrq7wTDW/cuEHHjh2xsrJix44dWFhYPNa8jAft3buXwMBA5s6dS/PmzTlz5gwDBgwAYOLEieTk5NC5c2fs7e3Zv38/N2/eZOjQoU90DiGEEEKIJ5WrtsaBeIj0VPyHbGxsqF27tq4RERkZybBhw4iNjSU1NZW//vqL06dP06JFCypWrMiIESOoXbs2Tk5ODBkyhHbt2rF27Vq9Y7q4uDB9+nTc3Nxwc3NjwYIFVKtWjdDQUNzc3Hj77bfp3bu3XiYpKYmmTZvi6emJk5MTnTp1wsfHR6/MpUuXaNGiBeXLl+enn37CwsLiqa558uTJjBkzhl69euHk5ETbtm2ZOnUqixYtAmDnzp2cOHGC5cuX4+XlhY+PD9OmTXuqcwkhhBBCvMz++ecf3n77bUqVKoWtrS19+/YlNfXRK9z9888/DBkyBDc3N8zNzalcuTLBwcHcvHnzic8tPRX/sRYtWhAZGcmHH37I3r17CQkJYe3atfz666/8888/VKhQARcXF7Kzs5k2bRpr167lr7/+IiMjg/T09Dwf7uvVq6f3OD4+nkaNGunt8/b21nscHBzMe++9x/bt22nTpg1dunShVq1aemXatm1Lw4YN+f777zE0fPrlOg8fPkx0dDSffvqpbl92djZ3794lLS2N+Ph4HB0dqVChwiPr+7D09HTS09P19mVlZGBkYvLU9RRCCCHEy6UkLin79ttvk5yczI4dO8jMzKRPnz4MGDCAVatW5Vv+4sWLXLx4kRkzZuDh4cGff/7JoEGDuHjxIj/++OMTnVt6Kv5jvr6+/Prrrxw+fBhjY2OqV6+Or68vkZGRREVF0aJFCwC++OIL5syZw+jRo9mzZw9xcXH4+fnlmYxtaWn5xHXo168fZ8+epWfPnhw5coT69eszb948vTIdO3bkl19+4fjx409/sUBqaiqTJ08mLi5Otx05coRTp05hZvZ0a6OHhIRgY2Ojt+1ds0ipnkIIIYQQL7L4+Hi2bt3KN998Q6NGjWjWrBnz5s1jzZo1XLx4Md9MzZo1CQ8Px9/fn2rVqtGqVSs+/fRTfvrpJ735r49DGhX/sfvzKmbNmqVrQNxvVERGRuLr6wtAdHQ0r732Gu+88w5eXl44OTlx8uTJQo/v7u5OTEyM3r59+/blKefo6MigQYNYt24dH374IYsXL9Z7/rPPPqNXr160bt1aqWFRt25dEhIScHZ2zrMZGBjg7u7O+fPnSU5OLrC+Dxo7diw3b97U25q/OfCp6yiEEEII8V9KT08nJSVFb3t4FMaT+v3337G1taV+/fq6fW3atMHAwID9+/c/9nFu3rxJqVKlnnilT2lU/Mfs7OyoVasWK1eu1DUgfHx8OHToECdPntQ1NFxcXNixYwe//fYb8fHxDBw4kMuXLxd6/EGDBnHq1ClGjhxJQkICq1atIiwsTK/M0KFD2bZtG+fOnePQoUPs2bMHd3f3PMeaMWMGb7/9Nq1ateLEiRNPdb0TJkxg+fLlTJ48mWPHjhEfH8+aNWsYN24ccO+H3dXVlV69enH48GH27t3Lxx9/XOAxTU1NKVWqlN4mQ5+EEEII8SRyc3KLbctv1EVISIjS9Vy6dIly5crp7TMyMqJ06dJcunTpsY5x7do1pk6dqltU50lIo6IYtGjRguzsbF2jonTp0nh4eODg4ICbmxsA48aNo27duvj5+eHr64uDgwOvv/56oceuXLky4eHhbNiwAS8vLxYuXJhn4nN2djbvv/8+7u7utGvXDldXV7766qt8jzdr1iy6detGq1atHqun5GF+fn5s3ryZ7du306BBAxo3bsysWbOoUqUKAAYGBqxfv547d+7QsGFD+vXrpzf/QgghhBCipMlv1MXYsWPzLTtmzBg0Gk2B29N++fuglJQUOnbsiIeHB5MmTXrivCZXbicoSoApOxKU8jfSMpXydRxtlfLdqz3d/JL7Ptjxl1Le2lRtzYa36lZUyi+NOa+UtzB5+sUEAAwNNMWaNy/m+t9U/PmvaGeulD+RfEsp30hrp5Q3MlT7fu1/fz35KikPqlmhlFK+YUW1vLXiz98nu84o5ecEeCrljySrvf6GGrXfn6u31W48ey1NLe9/4xelfLDPmMILFcBuc/73uXpcIR09lPIqagz/qdjOfWym/2OXvXr1Kn///XeBZZycnPjuu+/48MMPuX79um5/VlYWZmZm/PDDDwQEBDwyf+vWLfz8/LCwsGDz5s1PNe9VVn8SQgghhBDiOVW2bFnKli1baDlvb29u3LjBH3/8oVsddPfu3eTk5ORZGfRBKSkp+Pn5YWpqyqZNm556IR0Z/iSEEEIIIcQL7v6w9v79+xMTE0N0dDRBQUG8+eabuqX7//rrL6pXr65b1CclJYVXX32V27dvs2TJElJSUrh06RKXLl0iOzv7ic4vPRVCCCGEEOKlk1MCZwCsXLmSoKAgWrdujYGBAV26dGHu3Lm65zMzM0lISCAtLQ2AQ4cO6VaGcnZ21jvWuXPn0Gq1j31umVMhSgTVORXdvcor5b8/nFx4oQL8nao2pvadepWU8jfTn2wt6of9lviPUr5uJVul/KVbd5Xy1++ozSnIyMpRylcvZ6WUP3Hl0XdL/S/Of+yS2pyICjZqc4ocrNXyRy+lKOVrOqjNaSjun1/VOS1t3csVXqgAb3qpzcn6JuZPpXyK4t8/W3NjPail+gAAoMhJREFUpXxa5pN9G/yws1duK+VNjdQGrVzv1EEpvzA3USmvwn3YpmI7d/ys/yu2cz8rMvzpOZebm8uAAQMoXbo0Go0GW1tbhg4dWuTnmTRpErVr1y6wTO/evR9rBSpVvr6+z+QahRBCCCHuK84lZUsiGf70nNu6dSthYWFERkbi5OSEgYEB5uZqK61oNBrWr1//nzQQhBBCCCFEySeNiufcmTNnKF++PE2aNHms8hkZGZjIjeCEEEIIIQpUUnsMiosMf3qO9e7dmyFDhpCUlIRGo0Gr1eYZGqTVapk6dSqBgYGUKlWKAQMGkJGRQVBQEOXLl8fMzIwqVaro7tJ4f8JNQECA7pgPWrRoEY6OjlhYWNCtWzdu3nz0+t/p6ekEBwdTrlw5zMzMaNasGQcOHNArExUVRcOGDTE1NaV8+fKMGTOGrKx/x6/evn2bwMBArKysKF++PKGhoWovmhBCCCGE+M9Jo+I5NmfOHKZMmUKlSpVITk7O84H9vhkzZuDl5UVsbCzjx49n7ty5bNq0ibVr15KQkMDKlSt1jYf7x1i6dGmeY54+fZq1a9fy008/sXXrVmJjYxk8ePAj6zdq1CjCw8NZtmwZhw4dwtnZGT8/P/75596k3b/++osOHTrQoEEDDh8+zIIFC1iyZAmffPKJ7hgjR44kKiqKjRs3sn37diIjIzl06JDqSyeEEEIIIf5DMvzpOWZjY4O1tTWGhoY4ODg8slyrVq348MMPdY+TkpJwcXGhWbNmaDQaqlSponvu/s1TbG1t8xzz7t27LF++nIoV763EMW/ePDp27EhoaGiesrdv32bBggWEhYXRvn17ABYvXsyOHTtYsmQJI0eO5KuvvsLR0ZH58+ej0WioXr06Fy9eZPTo0UyYMIG0tDSWLFnCd999R+vWrQFYtmwZlSqprWQkhBBCCFGYHBn+VKSkp6IEqF+/vt7j3r17ExcXh5ubG8HBwWzfvv2xjlO5cmVdgwLu3ZkxJyeHhIS8y7WeOXOGzMxMmjZtqttnbGxMw4YNiY+PByA+Ph5vb280Go2uTNOmTUlNTeXChQucOXOGjIwMvbs8li5dGjc3twLrmZ6eTkpKit6WlaG2JKsQQgghhHh60qgoASwtLfUe161bl3PnzjF16lTu3LlDt27d6Nq1azHVruiFhIRgY2Ojt+1ds6i4qyWEEEKIF0hubm6xbSWRNCpKqFKlStG9e3cWL17M999/T3h4uG6ug7Gxcb63Xk9KSuLixYu6x/v27cPAwCDfnoNq1aphYmJCdHS0bl9mZiYHDhzAw8MDuHe7+N9//13vlyc6Ohpra2sqVapEtWrVMDY21t3JEeD69eucPHmywGsbO3YsN2/e1NuavznwMV8ZIYQQQghR1GRORQk0c+ZMypcvT506dTAwMOCHH37AwcEBW1tb4N4KULt27aJp06aYmppiZ2cHgJmZGb169WLGjBmkpKQQHBxMt27d8p3PYWlpyXvvvcfIkSMpXbo0lStXZvr06aSlpdG3b18ABg8ezOzZsxkyZAhBQUEkJCQwceJEhg8fjoGBAVZWVvTt25eRI0fyyiuvUK5cOT7++GMMDApu65qammJqaqq3z0iW0RVCCCGEKDbSqCiBrK2tmT59OqdOncLQ0JAGDRoQERGh+7AeGhrK8OHDWbx4MRUrViQxMREAZ2dnOnfuTIcOHfjnn3/o1KkTX3311SPP89lnn5GTk0PPnj25desW9evXZ9u2bbpGSsWKFYmIiGDkyJF4eXlRunRp+vbty7hx43TH+OKLL0hNTcXf3x9ra2s+/PDDApexFUIIIYQoCnKfiqKlyS2pA7vES2XKjryTyZ9Ed6/ySvnvDycr5f9OVZto/k49tRWzbqZnFV6oAL8l/qOUr1vJVil/6dZdpfz1O5lK+YysHKV89XJWSvkTV1KL9fzHLt1SylewMVPKO1ir5Y9eSlHK13QopZQv7p/fE8lq719b93JK+Te9KhZeqADfxPyplE9R/Ptna26slE/LzDsc+UmcvXJbKW9qpDYS/nqnDkr5hbmJSnkV1QaFF9u5zyzsUmznflakp0IIIYQQQrx0ZEnZoiUTtYUQQgghhBBKpKdCCCGEEEK8dHJz1IaeiYfkClHC3b17N3fixIm5d+/elbzkJS95yUte8i9I/lmr0ndNsW0lkUzUFiVeSkoKNjY23Lx5k1KlnnxCpeQlL3nJS17ykv/v88+att/3xXbuxG+6F9u5nxUZ/iSEEEIIIV46MvypaMlEbSGEEEIIIYQS6akQQgghhBAvHempKFrSUyFKPFNTUyZOnIipqankJS95yUte8pJ/QfLixSITtYUQQgghxEuncu8VxXbupLCexXbuZ0WGPwkhhBBCiJdObrYMfypKMvxJCCGEEEIIoUR6KoQQQgghxEtHJmoXLempEEIIIYQQQiiRngohhBBCCPHSkZ6KoiU9FUKI58758+e5cOGC7nFMTAxDhw7l66+//k/yxa1Vq1bcuHEjz/6UlBRatWr131foCT0v9b9y5Qp79+5l7969XLly5T87b1F50esvhHi5SE+FEI8pOzubI0eOUKVKFezs7Aose+jQIYyNjfH09ARg48aNLF26FA8PDyZNmoSJiUmB+a1bt2JlZUWzZs0A+PLLL1m8eDEeHh58+eWXhZ7/YXfv3sXMzOyJMsXprbfeYsCAAfTs2ZNLly7Rtm1batSowcqVK7l06RITJkx4pnnV9w/gzp075ObmYmFhAcCff/7J+vXr8fDw4NVXXy0wGxkZSUZGRp79d+/eZe/evYWeG+59sF+3bh22trZ6+1NSUnj99dfZvXt3gflffvmFJk2aYGSk/99EVlYWv/32Gz4+Ps+0/suXL6d79+551rfPyMhgzZo1BAYGPjJ769YtBg8ezJo1a8j+/6u7GBoa0r17d7788ktsbGweqw5w74N9QkICAG5ubpQrV+6xs0/raepvZ2eHRqN5rOP/888/efZt2rTpsev3f//3fwU+v2zZMsqUKUPHjh0BGDVqFF9//TUeHh6sXr2aKlWqFJgPCQnB3t6ed999V2//t99+y9WrVxk9enShddy1axe7du3iypUr5OTk5DnOfyUjIyPfOlSuXLnA3JPWf/jw4Y9dp5kzZ+bZp/r+q55flAxynwpRosydO/exywYHBxf4/NChQ/H09KRv375kZ2fTokULfvvtNywsLNi8eTO+vr6PzDZo0IAxY8bQpUsXzp49S40aNQgICODAgQN07NiR2bNnF3huT09PPv/8czp06MCRI0do0KABw4cPZ8+ePVSvXp2lS5cWen05OTl8+umnLFy4kMuXL3Py5EmcnJwYP348Wq2Wvn375smofjB50KPeC41Gg5mZGc7Ozvj4+GBoaJhvPfbt24ebmxtz587l+++/Jzo6mu3btzNo0CDOnj1b4LlV86rvH8Crr75K586dGTRoEDdu3KB69eoYGxtz7do1Zs6cyXvvvZcn87///Q+A2rVrs3v3bkqXLq17Ljs7m61bt7Jo0SISExMLPb+BgQGXLl3K8yH4ypUrVKxYkczMzALzhoaGJCcn58n//ffflCtXTvdh91nV/2nOf1/37t2JjY1l3rx5eHt7A/D777/zwQcfULt2bdasWVPo+Yui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",
      "text/plain": [
       "<Figure size 800x800 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.set_context({\"figure.figsize\":(8,8)})\n",
    "sns.heatmap(data=feature.corr(),square=True,cmap='RdBu_r')"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "整体来看数据相关性较弱,除了一血以外还有几个离散变量如双杀次数、三杀次数、四杀次数等，而timecc的值都是零等会要去掉这个没有影响的变量,id在训练的时候也要去掉"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "from category_encoders import *\n",
    "\n",
    "columns= ['kills','deaths','assists', 'largestkillingspree',\n",
    "    'largestmultikill', 'longesttimespentliving', 'doublekills',\n",
    "    'triplekills', 'quadrakills', 'pentakills','firstblood']\n",
    "m_feature = OrdinalEncoder(cols=columns).fit(feature).transform(feature)\n",
    "m_feature.columns=[\n",
    "    'id', 'akills', 'adeaths', 'aassists', 'alargestkillingspree',\n",
    "       'alargestmultikill', 'alongesttimespentliving', 'adoublekills',\n",
    "       'atriplekills', 'aquadrakills', 'apentakills', 'totdmgdealt',\n",
    "       'magicdmgdealt', 'physicaldmgdealt', 'truedmgdealt', 'largestcrit',\n",
    "       'totdmgtochamp', 'magicdmgtochamp', 'physdmgtochamp', 'truedmgtochamp',\n",
    "       'totheal', 'totunitshealed', 'dmgtoturrets', 'timecc', 'totdmgtaken',\n",
    "       'magicdmgtaken', 'physdmgtaken', 'truedmgtaken', 'wardsplaced',\n",
    "       'wardskilled', 'afirstblood'\n",
    "]\n",
    "m_feature=pd.concat([m_feature,feature[columns]],axis=1).drop(['timecc','id'],axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>akills</th>\n",
       "      <th>adeaths</th>\n",
       "      <th>aassists</th>\n",
       "      <th>alargestkillingspree</th>\n",
       "      <th>alargestmultikill</th>\n",
       "      <th>alongesttimespentliving</th>\n",
       "      <th>adoublekills</th>\n",
       "      <th>atriplekills</th>\n",
       "      <th>aquadrakills</th>\n",
       "      <th>apentakills</th>\n",
       "      <th>...</th>\n",
       "      <th>deaths</th>\n",
       "      <th>assists</th>\n",
       "      <th>largestkillingspree</th>\n",
       "      <th>largestmultikill</th>\n",
       "      <th>longesttimespentliving</th>\n",
       "      <th>doublekills</th>\n",
       "      <th>triplekills</th>\n",
       "      <th>quadrakills</th>\n",
       "      <th>pentakills</th>\n",
       "      <th>firstblood</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>5</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>569</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>8</td>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>880</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>6</td>\n",
       "      <td>16</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>593</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>381</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>11</td>\n",
       "      <td>25</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>455</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19995</th>\n",
       "      <td>10</td>\n",
       "      <td>12</td>\n",
       "      <td>28</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>9</td>\n",
       "      <td>28</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>886</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19996</th>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>30</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>383</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19997</th>\n",
       "      <td>10</td>\n",
       "      <td>12</td>\n",
       "      <td>16</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>548</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>9</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>387</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19998</th>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>381</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19999</th>\n",
       "      <td>12</td>\n",
       "      <td>8</td>\n",
       "      <td>26</td>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>1716</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>27</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>1989</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>200000 rows × 40 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       akills  adeaths  aassists  alargestkillingspree  alargestmultikill  \\\n",
       "0           1        1         1                     1                  1   \n",
       "1           2        2         2                     2                  1   \n",
       "2           1        3         3                     1                  1   \n",
       "3           1        4         4                     1                  1   \n",
       "4           3        5         5                     1                  1   \n",
       "...       ...      ...       ...                   ...                ...   \n",
       "19995      10       12        28                     1                  1   \n",
       "19996       1        4         1                     1                  1   \n",
       "19997      10       12        16                     1                  1   \n",
       "19998       8        1         4                     1                  4   \n",
       "19999      12        8        26                     6                  2   \n",
       "\n",
       "       alongesttimespentliving  adoublekills  atriplekills  aquadrakills  \\\n",
       "0                            1             1             1             1   \n",
       "1                            2             1             1             1   \n",
       "2                            3             1             1             1   \n",
       "3                            4             1             1             1   \n",
       "4                            5             1             1             1   \n",
       "...                        ...           ...           ...           ...   \n",
       "19995                       50             1             1             1   \n",
       "19996                       30             1             1             1   \n",
       "19997                      548             1             1             1   \n",
       "19998                        4             1             1             1   \n",
       "19999                     1716             3             1             1   \n",
       "\n",
       "       apentakills  ...  deaths  assists  largestkillingspree  \\\n",
       "0                1  ...       5        2                    0   \n",
       "1                1  ...       8        7                    3   \n",
       "2                1  ...       6       16                    0   \n",
       "3                1  ...       2        0                    0   \n",
       "4                1  ...      11       25                    0   \n",
       "...            ...  ...     ...      ...                  ...   \n",
       "19995            1  ...       9       28                    0   \n",
       "19996            1  ...       2        2                    0   \n",
       "19997            1  ...       9        4                    0   \n",
       "19998            1  ...       5        0                    0   \n",
       "19999            1  ...       1       27                    4   \n",
       "\n",
       "       largestmultikill  longesttimespentliving  doublekills  triplekills  \\\n",
       "0                     1                     569            0            0   \n",
       "1                     1                     880            0            0   \n",
       "2                     1                     593            0            0   \n",
       "3                     1                     381            0            0   \n",
       "4                     1                     455            0            0   \n",
       "...                 ...                     ...          ...          ...   \n",
       "19995                 1                     886            0            0   \n",
       "19996                 1                     383            0            0   \n",
       "19997                 1                     387            0            0   \n",
       "19998                 0                     381            0            0   \n",
       "19999                 2                    1989            1            0   \n",
       "\n",
       "       quadrakills  pentakills  firstblood  \n",
       "0                0           0           0  \n",
       "1                0           0           0  \n",
       "2                0           0           0  \n",
       "3                0           0           0  \n",
       "4                0           0           0  \n",
       "...            ...         ...         ...  \n",
       "19995            0           0           0  \n",
       "19996            0           0           0  \n",
       "19997            0           0           1  \n",
       "19998            0           0           0  \n",
       "19999            0           0           0  \n",
       "\n",
       "[200000 rows x 40 columns]"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m_feature"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "再对数据做一个归一化处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import MinMaxScaler\n",
    "sc = MinMaxScaler().fit(m_feature)\n",
    "feature = sc.transform(m_feature)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(200000, 40)"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.shape(feature)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "pd.DataFrame(feature).to_csv('pretrain/feature.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_train = feature[:180000]\n",
    "x_test = feature[180000:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "from sklearn.model_selection import cross_val_score, cross_val_predict\n",
    "\n",
    "xgb = XGBClassifier()\n",
    "xgb.fit(x_train, y_train)\n",
    "xgbpred = xgb.predict(feature)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "pd.DataFrame(xgbpred).to_csv('pretrain/xgboost.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "from lightgbm.sklearn import LGBMClassifier\n",
    "\n",
    "lgbm = LGBMClassifier()\n",
    "lgbm.fit(x_train, y_train)\n",
    "lgbmpred = lgbm.predict(feature)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "pd.DataFrame(lgbmpred).to_csv('pretrain/lightgbm.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "\n",
    "rfc = RandomForestClassifier(n_estimators=100, max_depth=5)\n",
    "rfc.fit(x_train, y_train)\n",
    "rfcpred = rfc.predict(feature)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "pd.DataFrame(rfcpred).to_csv('pretrain/forest.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import RidgeClassifier\n",
    "rc = RidgeClassifier()\n",
    "rc.fit(x_train, y_train)\n",
    "rcpred = rc.predict(feature)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "pd.DataFrame(rcpred).to_csv('pretrain/ridge.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 1, ..., 0, 0, 1])"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "knc = KNeighborsClassifier()\n",
    "knc.fit(x_train, y_train)\n",
    "knc.predict(feature)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "pd.DataFrame(rcpred).to_csv('pretrain/neighbors.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [],
   "source": [
    "feature = np.concatenate([\n",
    "    pd.read_csv('pretrain/feature.csv'),\n",
    "    pd.read_csv('pretrain/neighbors.csv'),\n",
    "    pd.read_csv('pretrain/forest.csv'),\n",
    "    pd.read_csv('pretrain/ridge.csv'),\n",
    "    pd.read_csv('pretrain/xgboost.csv'),\n",
    "    pd.read_csv('pretrain/lightgbm.csv')\n",
    "],axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [],
   "source": [
    "pd.DataFrame(feature[:180000]).to_csv('pretrain/train_feature.csv',index=False)\n",
    "pd.DataFrame(feature[180000:]).to_csv('pretrain/test_feature.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(200000, 45)"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feature.shape"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 三、模型搭建"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "from paddle import nn\n",
    "import paddle\n",
    "\n",
    "class MyNet(nn.Layer):\n",
    "    def __init__(self):\n",
    "        super(MyNet, self).__init__()\n",
    "        self.fc1 = nn.Linear(45, 90)\n",
    "        self.dr1 = nn.Dropout()\n",
    "        self.fc2 = nn.Linear(135, 45)\n",
    "        self.dr2 = nn.Dropout()\n",
    "        self.fc3 = nn.Linear(90, 1)\n",
    "        pass\n",
    "    def forward(self, input):\n",
    "        x = self.fc1(input)\n",
    "        x = paddle.concat([input, x],axis=1)\n",
    "        x = self.dr1(x)\n",
    "        x = self.fc2(x)\n",
    "        x = paddle.concat([input, x],axis=1)\n",
    "        x = self.dr2(x)\n",
    "        x = self.fc3(x)\n",
    "        return x\n",
    "    pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "---------------------------------------------------------------------------\n",
      " Layer (type)       Input Shape          Output Shape         Param #    \n",
      "===========================================================================\n",
      "   Linear-4        [[180000, 45]]        [180000, 90]          4,140     \n",
      "   Dropout-3      [[180000, 135]]       [180000, 135]            0       \n",
      "   Linear-5       [[180000, 135]]        [180000, 45]          6,120     \n",
      "   Dropout-4       [[180000, 90]]        [180000, 90]            0       \n",
      "   Linear-6        [[180000, 90]]        [180000, 1]            91       \n",
      "===========================================================================\n",
      "Total params: 10,351\n",
      "Trainable params: 10,351\n",
      "Non-trainable params: 0\n",
      "---------------------------------------------------------------------------\n",
      "Input size (MB): 30.90\n",
      "Forward/backward pass size (MB): 495.76\n",
      "Params size (MB): 0.04\n",
      "Estimated Total Size (MB): 526.70\n",
      "---------------------------------------------------------------------------\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'total_params': 10351, 'trainable_params': 10351}"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "paddle.summary(MyNet(),(180000,45))"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 四、模型训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "class MyDataset(paddle.io.Dataset):\n",
    "    def __init__(self, data, label) -> None:\n",
    "        super(MyDataset, self).__init__()\n",
    "        assert len(data)==len(label)\n",
    "        self.data = data\n",
    "        self.label = label\n",
    "        pass\n",
    "    def __getitem__(self, idx):\n",
    "        return np.array(self.data[idx]).astype('float32'), np.array(self.label[idx]).astype('float32')\n",
    "    def __len__(self):\n",
    "        return len(self.data)\n",
    "    pass\n",
    "# MyDataset(x_train,y_train)[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import paddle.nn.functional as F\n",
    "import paddle\n",
    "\n",
    "def train_pm(model, optimizer, mydataset, epoches=1):\n",
    "    # 开启0号GPU训练\n",
    "    paddle.device.set_device('gpu:0')\n",
    "\n",
    "    print('start training ... ')\n",
    "    model.train()\n",
    "    # 定义数据读取器，训练数据读取器和验证数据读取器\n",
    "    train_loader = paddle.io.DataLoader(mydataset,batch_size=180000,shuffle=True,drop_last=True)\n",
    "    valid_loader = paddle.io.DataLoader(mydataset,batch_size=180000,shuffle=True,drop_last=True)\n",
    "    for epoch in range(epoches):\n",
    "        for batch_id, data in enumerate(train_loader()):\n",
    "            x_data, y_data = data\n",
    "            img = paddle.to_tensor(x_data)\n",
    "            label = paddle.reshape(paddle.to_tensor(y_data),(-1,1))\n",
    "            # 运行模型前向计算，得到预测值\n",
    "            logits = model(img)\n",
    "            loss = F.binary_cross_entropy_with_logits(logits, label)\n",
    "            avg_loss = paddle.mean(loss)\n",
    "\n",
    "            if batch_id % 5 == 4:\n",
    "                print(\"epoch: {}, batch_id: {}, loss is: {:.4f}\".format(epoch, batch_id, float(avg_loss.numpy())))\n",
    "            # 反向传播，更新权重，清除梯度\n",
    "            avg_loss.backward()\n",
    "            optimizer.step()\n",
    "            optimizer.clear_grad()\n",
    "\n",
    "        model.eval()\n",
    "        accuracies = []\n",
    "        losses = []\n",
    "        for batch_id, data in enumerate(valid_loader()):\n",
    "            x_data, y_data = data\n",
    "            img = paddle.to_tensor(x_data)\n",
    "            label = paddle.reshape(paddle.to_tensor(y_data),(-1,1))\n",
    "            # 运行模型前向计算，得到预测值\n",
    "            logits = model(img)\n",
    "            # 二分类，sigmoid计算后的结果以0.5为阈值分两个类别\n",
    "            # 计算sigmoid后的预测概率，进行loss计算\n",
    "            pred = F.sigmoid(logits)\n",
    "            loss = F.binary_cross_entropy_with_logits(logits, label)\n",
    "            # 计算预测概率小于0.5的类别\n",
    "            pred2 = pred * (-1.0) + 1.0\n",
    "            # 得到两个类别的预测概率，并沿第一个维度级联\n",
    "            pred = paddle.concat([pred2, pred], axis=1)\n",
    "            acc = paddle.metric.accuracy(pred, paddle.cast(label, dtype='int64'))\n",
    "\n",
    "            accuracies.append(acc.numpy())\n",
    "            losses.append(loss.numpy())\n",
    "        print(\"[validation] accuracy/loss: {:.4f}/{:.4f}\".format(np.mean(accuracies), np.mean(losses)))\n",
    "        model.train()\n",
    "\n",
    "        paddle.save(model.state_dict(), 'palmp{}_{}.pdparams'.format(epoch,acc.numpy()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "W0207 18:06:33.189246  4829 gpu_resources.cc:61] Please NOTE: device: 0, GPU Compute Capability: 6.1, Driver API Version: 12.0, Runtime API Version: 11.7\n",
      "W0207 18:06:33.206691  4829 gpu_resources.cc:91] device: 0, cuDNN Version: 8.7.\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "mydataset = MyDataset(\n",
    "    np.array(pd.read_csv('pretrain/train_feature.csv')),\n",
    "    pd.read_csv('data/train.csv')['win']\n",
    ")\n",
    "mynet = MyNet()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "180000"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(mydataset)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "start training ... \n",
      "[validation] accuracy/loss: 0.5011/0.6455\n",
      "[validation] accuracy/loss: 0.8229/0.5244\n",
      "[validation] accuracy/loss: 0.8445/0.4252\n",
      "[validation] accuracy/loss: 0.8436/0.4083\n",
      "[validation] accuracy/loss: 0.8443/0.4139\n",
      "[validation] accuracy/loss: 0.8503/0.3985\n",
      "[validation] accuracy/loss: 0.8534/0.3958\n",
      "[validation] accuracy/loss: 0.8546/0.4042\n",
      "[validation] accuracy/loss: 0.8593/0.4050\n",
      "[validation] accuracy/loss: 0.8613/0.3927\n"
     ]
    }
   ],
   "source": [
    "train_pm(\n",
    "    mynet,\n",
    "    paddle.optimizer.Adam(parameters=mynet.parameters(), learning_rate=0.01),\n",
    "    mydataset,\n",
    "    10\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "def predict(model, dataloader):\n",
    "    model.eval()\n",
    "    for idx, data in enumerate(dataloader):\n",
    "        print('\\r{}/{}'.format(1+idx,len(dataloader)),end='')\n",
    "        x_data, filename = data\n",
    "        img = paddle.to_tensor(x_data)\n",
    "        # 运行模型前向计算，得到预测值\n",
    "        logits = model(img)\n",
    "        # 二分类，sigmoid计算后的结果以0.5为阈值分两个类别\n",
    "        # 计算sigmoid后的预测概率，进行loss计算\n",
    "        pred = F.sigmoid(logits)\n",
    "    return pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1/1"
     ]
    }
   ],
   "source": [
    "pred_y = predict(mynet,\n",
    "    paddle.io.DataLoader(\n",
    "        MyDataset(\n",
    "            np.array(pd.read_csv('pretrain/test_feature.csv')),\n",
    "            np.zeros(20000)\n",
    "        ),\n",
    "        batch_size=20000,\n",
    "        shuffle=False\n",
    "    )\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "class:  ndarray\n",
      "shape:  (20000, 1)\n",
      "strides:  (4, 4)\n",
      "itemsize:  4\n",
      "aligned:  True\n",
      "contiguous:  True\n",
      "fortran:  True\n",
      "data pointer: 0x44a7d0d0\n",
      "byteorder:  little\n",
      "byteswap:  False\n",
      "type: float32\n"
     ]
    }
   ],
   "source": [
    "np.info(pred_y.numpy())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "pd.DataFrame(np.where(pred_y.numpy()>0.5,1,0),columns=['win']).to_csv('submission.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "updating: submission.csv (deflated 90%)\n"
     ]
    }
   ],
   "source": [
    "!zip result/submission.zip submission.csv\n",
    "!rm submission.csv\n",
    "# 84.955"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 五、模型调优"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "更换为SGD优化器,减少学习次数,但是训练次数要更大"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "start training ... \n",
      "[validation] accuracy/loss: 0.8280/0.5419\n",
      "[validation] accuracy/loss: 0.8295/0.5403\n",
      "[validation] accuracy/loss: 0.8313/0.5387\n",
      "[validation] accuracy/loss: 0.8327/0.5371\n",
      "[validation] accuracy/loss: 0.8344/0.5356\n",
      "[validation] accuracy/loss: 0.8359/0.5341\n",
      "[validation] accuracy/loss: 0.8373/0.5326\n",
      "[validation] accuracy/loss: 0.8386/0.5311\n",
      "[validation] accuracy/loss: 0.8398/0.5296\n",
      "[validation] accuracy/loss: 0.8408/0.5282\n",
      "[validation] accuracy/loss: 0.8418/0.5268\n",
      "[validation] accuracy/loss: 0.8427/0.5254\n",
      "[validation] accuracy/loss: 0.8435/0.5240\n",
      "[validation] accuracy/loss: 0.8442/0.5226\n",
      "[validation] accuracy/loss: 0.8451/0.5212\n",
      "[validation] accuracy/loss: 0.8457/0.5199\n",
      "[validation] accuracy/loss: 0.8465/0.5186\n",
      "[validation] accuracy/loss: 0.8470/0.5173\n",
      "[validation] accuracy/loss: 0.8476/0.5160\n",
      "[validation] accuracy/loss: 0.8482/0.5147\n",
      "[validation] accuracy/loss: 0.8487/0.5134\n",
      "[validation] accuracy/loss: 0.8493/0.5122\n",
      "[validation] accuracy/loss: 0.8498/0.5110\n"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[44], line 2\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[39m# mynet = MyNet()\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m train_pm(\n\u001b[1;32m      3\u001b[0m     mynet,\n\u001b[1;32m      4\u001b[0m     paddle\u001b[39m.\u001b[39;49moptimizer\u001b[39m.\u001b[39;49mSGD(parameters\u001b[39m=\u001b[39;49mmynet\u001b[39m.\u001b[39;49mparameters(), learning_rate\u001b[39m=\u001b[39;49m\u001b[39m0.01\u001b[39;49m),\n\u001b[1;32m      5\u001b[0m     mydataset,\n\u001b[1;32m      6\u001b[0m     \u001b[39m25\u001b[39;49m\n\u001b[1;32m      7\u001b[0m )\n",
      "Cell \u001b[0;32mIn[2], line 33\u001b[0m, in \u001b[0;36mtrain_pm\u001b[0;34m(model, optimizer, mydataset, epoches)\u001b[0m\n\u001b[1;32m     31\u001b[0m accuracies \u001b[39m=\u001b[39m []\n\u001b[1;32m     32\u001b[0m losses \u001b[39m=\u001b[39m []\n\u001b[0;32m---> 33\u001b[0m \u001b[39mfor\u001b[39;00m batch_id, data \u001b[39min\u001b[39;00m \u001b[39menumerate\u001b[39m(valid_loader()):\n\u001b[1;32m     34\u001b[0m     x_data, y_data \u001b[39m=\u001b[39m data\n\u001b[1;32m     35\u001b[0m     img \u001b[39m=\u001b[39m paddle\u001b[39m.\u001b[39mto_tensor(x_data)\n",
      "File \u001b[0;32m~/anaconda3/envs/globalenv/lib/python3.10/site-packages/paddle/fluid/dataloader/dataloader_iter.py:268\u001b[0m, in \u001b[0;36m_DataLoaderIterSingleProcess.__next__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m    265\u001b[0m benchmark()\u001b[39m.\u001b[39mbefore_reader()\n\u001b[1;32m    266\u001b[0m \u001b[39mif\u001b[39;00m in_dygraph_mode():\n\u001b[1;32m    267\u001b[0m     data \u001b[39m=\u001b[39m core\u001b[39m.\u001b[39meager\u001b[39m.\u001b[39mread_next_tensor_list(\n\u001b[0;32m--> 268\u001b[0m         \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_reader\u001b[39m.\u001b[39;49mread_next_list()[\u001b[39m0\u001b[39m])\n\u001b[1;32m    269\u001b[0m     data \u001b[39m=\u001b[39m _restore_batch(data, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_structure_infos\u001b[39m.\u001b[39mpop(\u001b[39m0\u001b[39m))\n\u001b[1;32m    270\u001b[0m \u001b[39melse\u001b[39;00m:\n",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "mynet = MyNet()\n",
    "train_pm(\n",
    "    mynet,\n",
    "    paddle.optimizer.SGD(parameters=mynet.parameters(), learning_rate=0.01),\n",
    "    mydataset,\n",
    "    75\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1/1"
     ]
    }
   ],
   "source": [
    "pred_y = predict(mynet,\n",
    "    paddle.io.DataLoader(\n",
    "        MyDataset(\n",
    "            np.array(pd.read_csv('pretrain/test_feature.csv')),\n",
    "            np.zeros(20000)\n",
    "        ),\n",
    "        batch_size=20000,\n",
    "        shuffle=False\n",
    "    )\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "pd.DataFrame(np.where(pred_y.numpy()>0.5,1,0),columns=['win']).to_csv('submission.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  adding: submission.csv (deflated 90%)\n"
     ]
    }
   ],
   "source": [
    "!zip result/submission.zip submission.csv\n",
    "!rm submission.csv\n",
    "# "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "from gplearn.genetic import SymbolicTransformer\n",
    "function_set = ['add', 'sub', 'mul', 'div', 'log', 'sqrt', 'abs', 'neg', 'max', 'min']\n",
    "\n",
    "st = SymbolicTransformer(\n",
    "    generations=2,\n",
    "    population_size=1000,\n",
    "    hall_of_fame=100,\n",
    "    n_components=10,\n",
    "    function_set=function_set,\n",
    "    parsimony_coefficient=0.0005,\n",
    "    max_samples=0.9,\n",
    "    verbose=1,\n",
    "    random_state=0,\n",
    "    n_jobs=3\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "    |   Population Average    |             Best Individual              |\n",
      "---- ------------------------- ------------------------------------------ ----------\n",
      " Gen   Length          Fitness   Length          Fitness      OOB Fitness  Time Left\n",
      "   0    12.03        0.0967885        4         0.395269         0.413457     15.94s\n",
      "   1     6.91         0.250165        5         0.512841         0.518938      0.00s\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-3 {color: black;background-color: white;}#sk-container-id-3 pre{padding: 0;}#sk-container-id-3 div.sk-toggleable {background-color: white;}#sk-container-id-3 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-3 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-3 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-3 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-3 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-3 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-3 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-3 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-3 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-3 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-3 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-3 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-3 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-3 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-3 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-3 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-3 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-3 div.sk-item {position: relative;z-index: 1;}#sk-container-id-3 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-3 div.sk-item::before, #sk-container-id-3 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-3 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-3 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-3 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-3 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-3 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-3 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-3 div.sk-label-container {text-align: center;}#sk-container-id-3 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-3 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-3\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>[sub(max(X27, X31), X30),\n",
       " sub(X30, min(X31, X29)),\n",
       " sub(max(X6, X33), X30),\n",
       " add(X32, X21),\n",
       " neg(sqrt(neg(X21))),\n",
       " sub(sub(neg(X34), max(X3, X36)), neg(X30)),\n",
       " sub(add(X30, X25), div(X21, X15)),\n",
       " sub(min(sqrt(log(div(neg(X1), sqrt(X1)))), add(log(add(max(X38, X26), max(X0, X22))), log(mul(mul(X21, X31), add(X21, X29))))), mul(min(log(mul(sqrt(X37), sqrt(X23))), sqrt(abs(neg(X1)))), div(max(abs(neg(X20)), abs(neg(X36))), log(sub(max(X14, X19), sqrt(X30)))))),\n",
       " mul(X21, X31),\n",
       " min(div(min(add(neg(X24), sqrt(X21)), add(X32, X6)), neg(neg(neg(X32)))), add(sqrt(log(sqrt(X34))), sub(sqrt(mul(X16, X24)), neg(sqrt(X10)))))]</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" checked><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">SymbolicTransformer</label><div class=\"sk-toggleable__content\"><pre>[sub(max(X27, X31), X30),\n",
       " sub(X30, min(X31, X29)),\n",
       " sub(max(X6, X33), X30),\n",
       " add(X32, X21),\n",
       " neg(sqrt(neg(X21))),\n",
       " sub(sub(neg(X34), max(X3, X36)), neg(X30)),\n",
       " sub(add(X30, X25), div(X21, X15)),\n",
       " sub(min(sqrt(log(div(neg(X1), sqrt(X1)))), add(log(add(max(X38, X26), max(X0, X22))), log(mul(mul(X21, X31), add(X21, X29))))), mul(min(log(mul(sqrt(X37), sqrt(X23))), sqrt(abs(neg(X1)))), div(max(abs(neg(X20)), abs(neg(X36))), log(sub(max(X14, X19), sqrt(X30)))))),\n",
       " mul(X21, X31),\n",
       " min(div(min(add(neg(X24), sqrt(X21)), add(X32, X6)), neg(neg(neg(X32)))), add(sqrt(log(sqrt(X34))), sub(sqrt(mul(X16, X24)), neg(sqrt(X10)))))]</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "SymbolicTransformer(function_set=['add', 'sub', 'mul', 'div', 'log', 'sqrt',\n",
       "                                  'abs', 'neg', 'max', 'min'],\n",
       "                    generations=2, max_samples=0.9, n_jobs=3,\n",
       "                    parsimony_coefficient=0.0005, random_state=0, verbose=1)"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "st.fit(np.array(pd.read_csv('pretrain/train_feature.csv').drop(['40','41','42','43','44'],axis=1)),np.array(pd.read_csv('data/train.csv')['win']))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import Image\n",
    "import pydotplus\n",
    "graph = st._best_programs[0].export_graphviz()\n",
    "graph = pydotplus.graphviz.graph_from_dot_data(graph)\n",
    "Image(graph.create_png())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [],
   "source": [
    "pd.DataFrame(\n",
    "    np.concatenate(\n",
    "        [\n",
    "            st.transform(\n",
    "                np.array(\n",
    "                    pd.read_csv('pretrain/train_feature.csv').drop(['40','41','42','43','44'],axis=1)\n",
    "                )\n",
    "            ),\n",
    "            np.array(\n",
    "                pd.read_csv('pretrain/train_feature.csv')\n",
    "            )\n",
    "        ],\n",
    "        axis=1\n",
    "    )\n",
    ").to_csv('pretrain/gptrain.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [],
   "source": [
    "pd.DataFrame(\n",
    "    np.concatenate(\n",
    "        [\n",
    "            st.transform(\n",
    "                np.array(\n",
    "                    pd.read_csv('pretrain/test_feature.csv').drop(['40','41','42','43','44'],axis=1)\n",
    "                )\n",
    "            ),\n",
    "            np.array(\n",
    "                pd.read_csv('pretrain/test_feature.csv')\n",
    "            )\n",
    "        ],\n",
    "        axis=1\n",
    "    )\n",
    ").to_csv('pretrain/gptest.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "pd.DataFrame(\n",
    "    st.transform(\n",
    "        np.array(\n",
    "            pd.read_csv('pretrain/test_feature.csv').drop(['40','41','42','43','44'],axis=1)\n",
    "        )\n",
    "    )\n",
    ").to_csv('pretrain/onlygptest.csv')\n",
    "pd.DataFrame(\n",
    "    st.transform(\n",
    "        np.array(\n",
    "            pd.read_csv('pretrain/train_feature.csv').drop(['40','41','42','43','44'],axis=1)\n",
    "        )\n",
    "    )\n",
    ").to_csv('pretrain/onlygptrain.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [],
   "source": [
    "from paddle import nn\n",
    "import paddle\n",
    "import paddle.nn.functional as F\n",
    "\n",
    "class MyNet(nn.Layer):\n",
    "    def __init__(self):\n",
    "        super(MyNet, self).__init__()\n",
    "        self.fc1 = nn.Linear(55, 55)\n",
    "        self.dr1 = nn.Dropout()\n",
    "        self.fc2 = nn.Linear(110, 55)\n",
    "        self.dr2 = nn.Dropout()\n",
    "        self.fc3 = nn.Linear(55, 10)\n",
    "        self.fc4 = nn.Linear(20, 4)\n",
    "        self.fc5 = nn.Linear(5, 1)\n",
    "        pass\n",
    "    def forward(self, input):\n",
    "        x = self.fc1(input)\n",
    "        x = paddle.concat([x, input],axis=1)\n",
    "        x = F.relu(x)\n",
    "        x = self.dr1(x)\n",
    "        x = self.fc2(x)\n",
    "        x = F.relu(x)\n",
    "        x = self.dr2(x)\n",
    "        x = self.fc3(x)\n",
    "        x = paddle.concat([x, input[:,:10]],axis=1)\n",
    "        x = F.relu(x)\n",
    "        x = self.fc4(x)\n",
    "        x = paddle.concat([x, input[:,-2:-1]],axis=1)\n",
    "        x = F.relu(x)\n",
    "        x = self.fc5(x)\n",
    "        x = F.sigmoid(x)\n",
    "        return x\n",
    "    pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "---------------------------------------------------------------------------\n",
      " Layer (type)       Input Shape          Output Shape         Param #    \n",
      "===========================================================================\n",
      "  Linear-191       [[180000, 55]]        [180000, 55]          3,080     \n",
      "  Dropout-77      [[180000, 110]]       [180000, 110]            0       \n",
      "  Linear-192      [[180000, 110]]        [180000, 55]          6,105     \n",
      "  Dropout-78       [[180000, 55]]        [180000, 55]            0       \n",
      "  Linear-193       [[180000, 55]]        [180000, 10]           560      \n",
      "  Linear-194       [[180000, 20]]        [180000, 4]            84       \n",
      "  Linear-195       [[180000, 5]]         [180000, 1]             6       \n",
      "===========================================================================\n",
      "Total params: 9,835\n",
      "Trainable params: 9,835\n",
      "Non-trainable params: 0\n",
      "---------------------------------------------------------------------------\n",
      "Input size (MB): 37.77\n",
      "Forward/backward pass size (MB): 398.25\n",
      "Params size (MB): 0.04\n",
      "Estimated Total Size (MB): 436.06\n",
      "---------------------------------------------------------------------------\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'total_params': 9835, 'trainable_params': 9835}"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "paddle.summary(MyNet(),(180000,55))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "W0208 18:56:39.331553  9579 gpu_resources.cc:61] Please NOTE: device: 0, GPU Compute Capability: 6.1, Driver API Version: 12.0, Runtime API Version: 11.7\n",
      "W0208 18:56:39.348405  9579 gpu_resources.cc:91] device: 0, cuDNN Version: 8.7.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Tensor(shape=[1], dtype=float32, place=Place(gpu:0), stop_gradient=True,\n",
       "       [-1.99038506])"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "paddle.randn([10])[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [],
   "source": [
    "import paddle.nn.functional as F\n",
    "import paddle\n",
    "\n",
    "def train_pm(model, optimizer, feature, label, epoches=1):\n",
    "    # 开启0号GPU训练\n",
    "    paddle.device.set_device('gpu:0')\n",
    "\n",
    "    print('start training ... ')\n",
    "    model.train()    \n",
    "    for epoch in range(epoches):\n",
    "        feature = paddle.to_tensor(feature)\n",
    "        label = paddle.reshape(paddle.to_tensor(label),(-1,1))\n",
    "        # 运行模型前向计算，得到预测值\n",
    "        logits = model(feature)\n",
    "        loss = F.binary_cross_entropy_with_logits(logits, label)\n",
    "        avg_loss = paddle.mean(loss)\n",
    "        # 反向传播，更新权重，清除梯度\n",
    "        avg_loss.backward()\n",
    "        optimizer.step()\n",
    "        optimizer.clear_grad()\n",
    "\n",
    "        model.eval()\n",
    "        accuracies = []\n",
    "        losses = []\n",
    "\n",
    "        # 运行模型前向计算，得到预测值\n",
    "        logits = model(feature)\n",
    "        # 二分类，sigmoid计算后的结果以0.5为阈值分两个类别\n",
    "        # 计算sigmoid后的预测概率，进行loss计算\n",
    "        pred = F.sigmoid(logits)\n",
    "        loss = F.binary_cross_entropy_with_logits(logits, label)\n",
    "        # 计算预测概率小于0.5的类别\n",
    "        pred2 = pred * (-1.0) + 1.0\n",
    "        # 得到两个类别的预测概率，并沿第一个维度级联\n",
    "        pred = paddle.concat([pred2, pred], axis=1)\n",
    "        acc = paddle.metric.accuracy(pred, paddle.cast(label, dtype='int64'))\n",
    "\n",
    "        accuracies.append(acc.numpy())\n",
    "        losses.append(loss.numpy())\n",
    "\n",
    "        print(\"[validation] accuracy/loss: {:.4f}/{:.4f}\".format(np.mean(accuracies), np.mean(losses)))\n",
    "        model.train()\n",
    "\n",
    "        paddle.save(model.state_dict(), 'palmp{}_{}.pdparams'.format(epoch,acc.numpy()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "start training ... \n",
      "[validation] accuracy/loss: 0.4999/0.6869\n",
      "[validation] accuracy/loss: 0.4999/0.6702\n",
      "[validation] accuracy/loss: 0.4999/0.6498\n",
      "[validation] accuracy/loss: 0.4999/0.6286\n",
      "[validation] accuracy/loss: 0.4999/0.6109\n",
      "[validation] accuracy/loss: 0.4999/0.5987\n",
      "[validation] accuracy/loss: 0.4999/0.5911\n",
      "[validation] accuracy/loss: 0.4999/0.5859\n",
      "[validation] accuracy/loss: 0.5004/0.5817\n",
      "[validation] accuracy/loss: 0.5059/0.5786\n",
      "[validation] accuracy/loss: 0.5354/0.5766\n",
      "[validation] accuracy/loss: 0.6131/0.5753\n",
      "[validation] accuracy/loss: 0.7099/0.5744\n",
      "[validation] accuracy/loss: 0.7863/0.5739\n",
      "[validation] accuracy/loss: 0.8221/0.5735\n",
      "[validation] accuracy/loss: 0.8365/0.5731\n",
      "[validation] accuracy/loss: 0.8457/0.5724\n",
      "[validation] accuracy/loss: 0.8514/0.5711\n",
      "[validation] accuracy/loss: 0.8550/0.5698\n",
      "[validation] accuracy/loss: 0.8571/0.5692\n"
     ]
    }
   ],
   "source": [
    "mynet = MyNet()\n",
    "train_pm(\n",
    "    mynet,\n",
    "    paddle.optimizer.Adam(\n",
    "        parameters=mynet.parameters(),\n",
    "        learning_rate=0.01\n",
    "    ),\n",
    "    np.array(\n",
    "        pd.read_csv('pretrain/gptrain.csv')\n",
    "    ).astype('float32'),\n",
    "    np.array(\n",
    "        pd.read_csv('data/train.csv')['win']\n",
    "    ).astype('float32'),\n",
    "    20\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [],
   "source": [
    "mynet = MyNet()\n",
    "mynet.eval()\n",
    "mynet.load_dict(paddle.load('model/palmp6_[0.88212776].pdparams'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.47705308"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mynet(\n",
    "    paddle.to_tensor(\n",
    "        np.array(\n",
    "            pd.read_csv('pretrain/gptest.csv')\n",
    "        ).astype('float32')\n",
    "    )\n",
    ").numpy().mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [],
   "source": [
    "pd.DataFrame(\n",
    "    np.where(\n",
    "        mynet(\n",
    "            paddle.to_tensor(\n",
    "                np.array(\n",
    "                    pd.read_csv('pretrain/gptest.csv')\n",
    "                ).astype('float32')\n",
    "            )\n",
    "        ).numpy() > 0.5, 1, 0\n",
    "    ),\n",
    "    columns=['win']\n",
    ").to_csv('submission.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "updating: submission.csv (deflated 90%)\n"
     ]
    }
   ],
   "source": [
    "!zip result/submission.zip submission.csv\n",
    "!rm submission.csv\n",
    "# "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.8 (main, Nov 24 2022, 14:13:03) [GCC 11.2.0]"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "ec69b73d0a6985895cc9f85863fd33c600647e90f46968e0f1901acb27b9505b"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
